牛客网【每日一题】3月25日 tokitsukaze and Soldier
牛客网【每日一题】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相关推荐
- 牛客网 每日一题 7月23日题目精讲—wpy的请求
来源:牛客网: 文章目录 wpy的请求 题解: 代码: wpy的请求 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge ...
- 2021-09-02牛客网每日10题--前端
3 ng-class是做什么用的? 给元素绑定类名 eg:用法①: // An highlighted block <div ng-class="{'A':isA,'B':isB,'C ...
- 牛客网SQL刷题笔记(MySQL)
牛客网SQL刷题笔记(MySQL) 此博客集合LeetCode.牛客网常见的题型及其解法,侵删 目录 牛客网SQL刷题笔记(MySQL) 类型1:查找排名第几的数据 SQL2 查找入职员工时间排名倒数 ...
- 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...
不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概 ...
- 牛客网Java刷题知识点之构造函数可以调用一般函数,但是一般函数不可以直接调用构造函数...
不多说,直接上干货! 通过 牛客网Java刷题知识点之构造函数是什么.一般函数和构造函数什么区别呢.构造函数的重载.构造函数的内存图解 我们对构造函数有了一个比较清楚的认识,当我们在创建对象时,我们会 ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合...
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别
不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...
- 牛客网Veirlog刷题答案目录(持续更新)
牛客网Veirlog刷题答案目录(持续更新) 基础篇 进阶篇 基础篇 1.VL1--四选一多路选择器 2.VL2--异步复位的串联T触发器 3.VL3--奇偶校验 4.VL4--移位运算与乘法 5.V ...
- 牛客网刷算法题的输入输出(C++)
内容简述 该篇文章将对牛客网刷题中关于输入输出的一些问题作一个总结.每年互联网公司的招聘都必不可少会有算法题,因此平时很多人都会去一些刷题网站进行刷题来学习.这里面用的比较多的刷题网站是leetcod ...
最新文章
- AI科技大本营在线公开课大放送(附演讲PPT)
- 深度学习笔记第二门课 改善深层神经网络 第二周:优化算法
- HDU_1541 Stars(树状数组)
- 主存储器物理地址,逻辑地址,转换
- JEECG Framework 3.5.2 (快速开发平台) ACE版本发布
- POJ 1681 高斯消元 枚举自由变元
- r语言和python爬虫谁厉害_R语言中,RCurl优势在哪儿,做爬虫的话用Python还是RCurl效率高?...
- 【kafka】kerberos client is being asked for a password not available to garner authentication informa
- 由于找不到iUtils.dll,无法继续执行代码。重新安装程序可能会解决此问题。
- 拼多多否认对极兔快递“政策倾斜”;86版西游记“红孩儿”成中科院博士;AirTag遭破解 | 极客头条...
- springboot整合JDBC+Druid
- Java 多维数组 三维数组 初始化 赋值 打印
- HD 2177(威佐夫博弈 入门)
- SPSS安装激活教程(包含网盘链接)
- 基于SSM实现的超市管理系统
- 包装严重的IT行业,作为面试官,我是如何甄别应聘者的包装程度!
- 别让你20多岁的活法,毁掉你30岁后的人生
- 如何面对高水平的破解组织 谈暴力破解应对
- python学习--统计序列中元素出现的频度(次数)
- 微信小程序--优购商城项目(4)
热门文章
- 90后一代人还能通过攒钱改变现状吗?
- python安装beautifulsoup失败_Win10环境下python36安装BeautifulSoup出现错误的解决办法
- linux 消息队列_Linux进程间通信第六讲 标准IPC之消息队列
- c++ vector拷贝构造_JDK源码分析-Vector
- mysql挂载到iscsi_corosync+pacemaker+iscsi磁盘实现mysql高可用
- linux 创建ll,两台linux建立GRE隧道
- java并发框架支持锁包括,jdk1.8锁
- php 自定义菜单 openid,微信公众平台开发(99) 自定义菜单获取OpenID
- php myadmin怎么用,关于apachemysqlphpmyadmin的安装与配置
- sae 本地环境 mysql数据库_SAE本地环境与真实环境的差别