Codeforces Beta Round #37 B. Computer Game 暴力 贪心

来源:互联网 发布:node express 中间件 编辑:程序博客网 时间:2024/06/07 01:31

题目链接:这里
题意:有一个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, &reg);    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;}
0 0
原创粉丝点击