#include
using namespace std;
// 本题思路:从后往前填充关卡,每次找当前能填的最高分的锦囊
const int N = 1005, M = 1005;
struct Data{
int score, timee;
bool use;
// use记录锦囊是否用过
} a[M];
// a[] 存储锦囊
int ans, n, m;
int main(){
scanf("%d%d", &n, &m);
for(int i = 1; i <= m; ++i)
scanf("%d%d", &a[i].timee, &a[i].score);
for(/*****【请补全】*****/){
// i枚举的是第i关
int id = 0;
// id存储目前可选锦囊中分数最高的锦囊的下标
for(int j = 1; j <= m; ++j){
// j枚举的是锦囊的下标
if(a[j].timee >= i && !a[j].use){
// 这个锦囊在第i个时刻还没有过期
if(/*****【请补全】*****/)
id = j;
// 做一次更新操作
}
}
if(id != 0){
ans += a[id].score;
/*****【请补全】*****/
}
}
printf("%d\n", ans);
return 0;
}
哥,我建议你发一下文字,要不然我们想回也没办法
代码勇者来到了金苹果岛上,金苹果岛上有两种苹果:随处可见的红苹果与稀有美味的金苹果。
勇者的初始代码能力为 1,他每吃下一个红苹果,代码能力就会得到一定程度的提升(每个红苹果带来的提升可能是不同的,甚至也可能是负的);他每吃下一个金苹果,代码能力就会直接翻倍**(每个金苹果的效果都是完全相同的)。
岛上的苹果仙子用 n 个红苹果和m个金苹果招待了勇者,勇者必须吃光所有苹果。勇者必须按照仙子规定的顺序吃红苹果,但是他可以自由安排**什么时候吃金苹果(可以在吃任意一个红苹果之前或之后吃若干个金苹果)。
求勇者在离开金苹果岛的时候的代码能力的最大值。
输出一个整数,表示勇者在离开金苹果岛的时候的代码能力的最大值。
6 2
1 -2 3 1 -6 5
15
8 3
5 -3 -8 2 4 -11 9 1
42
勇者吃掉红苹果 1,-2,3,1,代码能力变为 4;
勇者吃掉 $2$ 颗金苹果,代码能力变为 16;
勇者吃掉红苹果 -6,5,代码能力变为 15。
这是勇者的最优方案。
对于 10% 的数据,a_i\ge0;
对于 30% 的数据,m=0;
对于 70% 的数据,m=1;
对于 100% 的数据,
那么下面上图和链接,各位有钱的捧个钱场,没钱的捧个人场。