牛客网【每日一题】3月25

题号:NC50439
名称: tokitsukaze and Soldier
来源:练习赛50-C
链接: link.

来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 524288K,其他语言1048576K
64bit IO Format: %lld
题目描述
在一个游戏中,tokitsukaze需要在n个士兵中选出一些士兵组成一个团去打副本。
第i个士兵的战力为v[i],团的战力是团内所有士兵的战力之和。
但是这些士兵有特殊的要求:如果选了第i个士兵,这个士兵希望团的人数不超过s[i]。(如果不选第i个士兵,就没有这个限制。)
tokitsukaze想知道,团的战力最大为多少。
输入描述:

第一行包含一个正整数n(1≤n≤10^5)。
接下来n行,每行包括2个正整数v,s(1≤v≤10^9,1≤s≤n)。

输出描述:

输出一个正整数,表示团的最大战力。

示例1
输入

2
1 2
2 2

输出

3

示例2
输入

3
1 3
2 3
100 1

输出

100

思路
所求的最大战斗力由v和s这两个因素限制。
结构体数组a存放v和s,然后对其排序,先按照s从大到小,如果s相同再排v,也是从大到小(先要保证足够的人数,后面好进行取舍)。
定义一个从小到大的优先队列q,ans相互跟随q,(q每次添加一个战力值,同时用ans加上战力值;ans删去,q也弹出),战力值的先后加入由s的排序决定,当q的元素数量大于当前s的值时(s是由大到小的排序的),就将多出的部分pop出(q是从小到大排序,所以弹出的总是其中最小值),再用ans减去,这样ans的值即为在人数限定在s内的最佳情况(因为弹出的是最小值,相对于前s个数的和,所以之后也不用再考虑被弹出的数),记录ans的最大值
我刚开始提交是70多分,想了一阵子才发现是数组开小了(笑哭)

#include<map>
#include<queue>
#include<bits/stdc++.h>
#define maxn 100004
using namespace std;
struct node{long long int v,s;
};
node a[maxn];
bool cmp(node a,node b)
{if(a.s!=b.s)return a.s>b.s;else return a.v>a.v;
}
int main()
{int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i].v>>a[i].s;}sort (a+1,a+1+n,cmp);
//  int tot=0;long long int ans=0;int minn=maxn;long long int maxx=0;priority_queue<int,vector<int>,greater<int> >q;for(int i=1;i<=n;i++){q.push(a[i].v);ans+=a[i].v;while(q.size()>a[i].s){ans-=q.top();
//          printf("q.size=%d,a[i].s=%d,ans=%d\n",q.size(),a[i].s,ans);q.pop();
//          tot--;}if(ans>maxx)maxx=ans;}cout<<maxx;return 0;
}

牛客网【每日一题】3月25日 tokitsukaze and Soldier相关推荐

  1. 牛客网 每日一题 7月23日题目精讲—wpy的请求

    来源:牛客网: 文章目录 wpy的请求 题解: 代码: wpy的请求 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge ...

  2. 2021-09-02牛客网每日10题--前端

    3 ng-class是做什么用的? 给元素绑定类名 eg:用法①: // An highlighted block <div ng-class="{'A':isA,'B':isB,'C ...

  3. 牛客网SQL刷题笔记(MySQL)

    牛客网SQL刷题笔记(MySQL) 此博客集合LeetCode.牛客网常见的题型及其解法,侵删 目录 牛客网SQL刷题笔记(MySQL) 类型1:查找排名第几的数据 SQL2 查找入职员工时间排名倒数 ...

  4. 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...

    不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概 ...

  5. 牛客网Java刷题知识点之构造函数可以调用一般函数,但是一般函数不可以直接调用构造函数...

    不多说,直接上干货! 通过 牛客网Java刷题知识点之构造函数是什么.一般函数和构造函数什么区别呢.构造函数的重载.构造函数的内存图解 我们对构造函数有了一个比较清楚的认识,当我们在创建对象时,我们会 ...

  6. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合...

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  7. 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  8. 牛客网Veirlog刷题答案目录(持续更新)

    牛客网Veirlog刷题答案目录(持续更新) 基础篇 进阶篇 基础篇 1.VL1--四选一多路选择器 2.VL2--异步复位的串联T触发器 3.VL3--奇偶校验 4.VL4--移位运算与乘法 5.V ...

  9. 牛客网刷算法题的输入输出(C++)

    内容简述 该篇文章将对牛客网刷题中关于输入输出的一些问题作一个总结.每年互联网公司的招聘都必不可少会有算法题,因此平时很多人都会去一些刷题网站进行刷题来学习.这里面用的比较多的刷题网站是leetcod ...

最新文章

  1. AI科技大本营在线公开课大放送(附演讲PPT)
  2. 深度学习笔记第二门课 改善深层神经网络 第二周:优化算法
  3. HDU_1541 Stars(树状数组)
  4. 主存储器物理地址,逻辑地址,转换
  5. JEECG Framework 3.5.2 (快速开发平台) ACE版本发布
  6. POJ 1681 高斯消元 枚举自由变元
  7. r语言和python爬虫谁厉害_R语言中,RCurl优势在哪儿,做爬虫的话用Python还是RCurl效率高?...
  8. 【kafka】kerberos client is being asked for a password not available to garner authentication informa
  9. 由于找不到iUtils.dll,无法继续执行代码。重新安装程序可能会解决此问题。
  10. 拼多多否认对极兔快递“政策倾斜”;86版西游记“红孩儿”成中科院博士;AirTag遭破解 | 极客头条...
  11. springboot整合JDBC+Druid
  12. Java 多维数组 三维数组 初始化 赋值 打印
  13. HD 2177(威佐夫博弈 入门)
  14. SPSS安装激活教程(包含网盘链接)
  15. 基于SSM实现的超市管理系统
  16. 包装严重的IT行业,作为面试官,我是如何甄别应聘者的包装程度!
  17. 别让你20多岁的活法,毁掉你30岁后的人生
  18. 如何面对高水平的破解组织 谈暴力破解应对
  19. python学习--统计序列中元素出现的频度(次数)
  20. 微信小程序--优购商城项目(4)

热门文章

  1. 90后一代人还能通过攒钱改变现状吗?
  2. python安装beautifulsoup失败_Win10环境下python36安装BeautifulSoup出现错误的解决办法
  3. linux 消息队列_Linux进程间通信第六讲 标准IPC之消息队列
  4. c++ vector拷贝构造_JDK源码分析-Vector
  5. mysql挂载到iscsi_corosync+pacemaker+iscsi磁盘实现mysql高可用
  6. linux 创建ll,两台linux建立GRE隧道
  7. java并发框架支持锁包括,jdk1.8锁
  8. php 自定义菜单 openid,微信公众平台开发(99) 自定义菜单获取OpenID
  9. php myadmin怎么用,关于apachemysqlphpmyadmin的安装与配置
  10. sae 本地环境 mysql数据库_SAE本地环境与真实环境的差别