Codeforces #252 (Div. 2) B. Valera and Fruits

题目倒是不难,可是读起来非常恶心

依据题目的描写叙述不easy找到适合存储的方法

后来我就想不跟着出题人的思路走

我自己开一个数组c

令c[a[i]] = b[i]

则c[i] == [j] 代表第i天相应有j个果子成熟

接着用贪心的方法做就好了

当前天尽可能收取昨天的果子。在收完的情况下再考虑今天的果子

代码例如以下:

#include <cstdio>
#include <iostream>
#include <algorithm>
#define MAXN 10010
#define ll long long
using namespace std; int c[MAXN];
int a, b;
ll t, v, n, ans; void f(int i) { if(c[i] && t) {
if(c[i] > t) {
ans += t;
c[i] -= t;
t = 0;
}
else {
ans += c[i];
t -= c[i];
c[i] = 0;
}
}
} int main(void) { while(cin >> n >> v) {
ans = 0;
for(int i=1; i<=n; ++i) {
cin >> a >> b;
c[a] += b;
}
for(int i=1; i<3005; ++i) {
t = v;
f(i-1);
f(i);
// f(i+1);
}
cout << ans << endl;
}
return 0;
}
上一篇:Codeforces 441 B. Valera and Fruits


下一篇:初步boost之pool图书馆学习笔记