题目链接:这里
题意:有一个boss有hp点血,然后每秒钟回复reg。现在你有n个魔法,每个魔法只能在BOSS的血量大于p[i]%的时候使用,会给boss挂上一个每秒钟掉d[i]的buff。现在问你你怎么使用这个魔法,才能让boss死的最快。
解法:贪心,每一秒钟使用最厉害的技能就好了…… 然后直接暴力莽一波
//CF 37B
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1005;
vector <pair<int, int> > ans;
int b[maxn], c[maxn], vis[maxn];
int main(){
int n, hp, reg;
scanf("%d%d%d", &n, &hp, ®);
for(int i = 0; i < n; i++) scanf("%d%d", &b[i], &c[i]);
int cur = hp, dmg = 0, t = 0, flag = 0;
while(cur > 0){
cur -= dmg;
cur += reg;
cur = min(cur, hp);
if(cur <= 0) break;
int pos = -1;
for(int i = 0; i < n; i++){
if(!vis[i] && b[i]*hp >= 100*cur){
if(pos == -1 || c[i] > c[pos]){
pos = i;
}
}
}
if(pos != -1){
vis[pos] = 1;
dmg += c[pos];
ans.push_back(make_pair(t, pos+1));
}
else{
if(cur == hp){
flag = 1;
break;
}
}
++t;
}
if(flag) return puts("NO"), 0;
else{
puts("YES");
printf("%d %d\n", t, ans.size());
for(int i = 0; i < ans.size(); i++){
cout << ans[i].first << " " << ans[i].second << endl;
}
}
return 0;
}