每日一题 3.25 tokitsukaze and Soldier

tokitsukaze and Soldier

https://ac.nowcoder.com/acm/problem/50439

这是一个贪心题
按容纳人数排序 当新加入的人的容纳人数小于总人时 去除人数差个战力最小的人
每次加入人都会记录一下最大值
最后就求出了军团战力的最大值

#include <bits/stdc++.h>
#define ll long long
ll const N=1e5+5;
using namespace std;
ll n,v[N],s[N];
priority_queue<ll, vector<ll>, greater<ll> > q;
struct T{
int v,s;
}k[N];
bool cmp(T a,T b){
    return a.s>b.s;
};
int main()
{
   scanf("%d",&n);
   for(int i=1;i<=n;++i)scanf("%d%d",&k[i].v,&k[i].s);
   sort(k+1,k+1+n,cmp);
   ll z=0,ans=0;
   for(int i=1;i<=n;++i)
   {
      z+=k[i].v;
      q.push(k[i].v);
      while(q.size()>k[i].s)
      {
          z-=q.top();
          q.pop();
      }
      ans=max(ans,z);
   }
    cout<<ans<<endl;
    return 0;
}
每日一题题解 文章被收录于专栏

每日一题题解的汇集

全部评论

相关推荐

12-20 11:21
复旦大学 Java
点赞 评论 收藏
分享
烤点老白薯:他第二句话的潜台词是想让你帮他点个瑞幸或者喜茶啥的
mt对你说过最有启发的一...
点赞 评论 收藏
分享
评论
7
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务