求助站外题
  • 板块灌水区
  • 楼主XiaoZhouQWQ
  • 当前回复8
  • 已保存回复9
  • 发布时间2024/5/30 21:05
  • 上次更新2024/5/31 01:31:32
查看原帖
求助站外题
1033713
XiaoZhouQWQ楼主2024/5/30 21:05

说明 我们现在只有一位玩家,他有无限的血量,但是只有 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;
}
2024/5/30 21:05
加载中...