说明 我们现在只有一位玩家,他有无限的血量,但是只有 1 1 点的攻击力。
现在,有 ? N 个怪兽,每个怪兽有自己的血量 ? ? HP 和它的攻击力 ? ? ? DPS 。
你可以选择在挨了所有存活怪兽一次攻击之后攻击怪兽,如果某个怪兽的 ? ? HP 值小于等于 0 0 ,则表示杀死该怪兽,现在请你求你的最优策略下,你最少会受到几点伤害?
输入格式 第一行,输入一个整数 ? ( 1 ≤ ? ≤ 20 ) N(1≤N≤20) ,表示有 ? N 只怪兽。
接下去 ? N 行,每行两个整数 ? ? ? DPS 和 ? ? HP 分别表示该怪兽对应的攻击力和血量 1 ≤ ? ? ? , ? ? ≤ 1000 1≤DPS,HP≤1000 。
输出格式 在一行中输出一个整数,表示最优策略下,该玩家最少受到几点伤害\
输入样例:
1
10
输出:
20
这道题应该是贪心,但不知道为什么只有8分
代码如下:
#include<bits/stdc++.h>
using namespace std;
int T,ans;
struct Node{
int hp,dfs;
};
Node s[10001];
bool cmp(Node a,Node b){
return a.hp<b.hp;
}
int main(){
cin>>T;
for(int i=0;i<T;i++){
cin>>s[i].dfs>>s[i].hp;
}
sort(s,s+T,cmp);
for(int i=0;i<T;i++){
ans=ans+s[i].hp*s[i].dfs;
}
cout<<ans;
return 0;
}