news 2026/7/28 15:37:33

在一个游戏中,tokitsukaze需要在n个士兵中选出一些士兵组成一个团去打副本。 第i个士兵的战力为v[i],团的战力是团内所有士兵的战力之和。 但是这些士兵有特殊的要求:如果选了第i个士兵,这个

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在一个游戏中,tokitsukaze需要在n个士兵中选出一些士兵组成一个团去打副本。 第i个士兵的战力为v[i],团的战力是团内所有士兵的战力之和。 但是这些士兵有特殊的要求:如果选了第i个士兵,这个

链接:https://ac.nowcoder.com/acm/contest/1080/C
来源:牛客网

时间限制: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

#include<iostream> #include<set> #include<algorithm> using namespace std; struct node { int v, s; }a[100008]; bool comp(node a,node b) { return a.s > b.s; } int main() { multiset<int> S; int n; long long ans = 0, sum = 0; cin >> n; for (int i = 0; i < n; i++) { cin >> a[i].v >>a[i].s; } sort(a, a + n, comp); for (int i = 0; i < n; i++) { S.insert(a[i].v); sum += a[i].v; while (S.size() > a[i].s) { sum -= *S.begin(); S.erase(S.begin()); } ans = max(ans, sum); } cout << ans; return 0; }
#include<iostream> #include<algorithm> #include<queue> using namespace std; struct node { int x, y; }a[100008]; bool comp(node u, node v) { return u.y > v.y; } int main() { priority_queue<int,vector<int>,greater<int> > S; int n; long long ans = 0, sum = 0; cin >> n; for (int i = 0; i < n; i++) { cin >> a[i].x >> a[i].y; } sort(a, a + n, comp); for (int i = 0; i < n; i++) { S.push(a[i].x); sum += a[i].x; while (S.size() > a[i].y) { sum -= S.top(); S.pop(); } ans = max(ans, sum); } cout << ans; return 0; }
#include<iostream> #include<algorithm> #include<queue> using namespace std; struct node { int x, y; bool operator<(const node &v)const { return x>v.x; } }a[100008]; bool comp(node u, node v) { return u.y > v.y; } int main() { priority_queue<node> S; int n; long long ans = 0, sum = 0; cin >> n; for (int i = 0; i < n; i++) { cin >> a[i].x >> a[i].y; } sort(a, a + n, comp); for (int i = 0; i < n; i++) { S.push(a[i]); sum += a[i].x; while (S.size() > a[i].y) { sum -= S.top().x; S.pop(); } ans = max(ans, sum); } cout << ans; return 0; }
#include<iostream> #include<algorithm> #include<queue> using namespace std; struct node { int x, y; }a[100008]; bool comp(node u, node v) { return u.y > v.y; } struct cmp1 { bool operator()(const node& u, const node& v)const { return u.x > v.x; } }; int main() { priority_queue<node,vector<node>,cmp1> S; int n; long long ans = 0, sum = 0; cin >> n; for (int i = 0; i < n; i++) { cin >> a[i].x >> a[i].y; } sort(a, a + n, comp); for (int i = 0; i < n; i++) { S.push(a[i]); sum += a[i].x; while (S.size() > a[i].y) { sum -= S.top().x; S.pop(); } ans = max(ans, sum); } cout << ans; return 0; }
  • 第一个程序用multiset容器,默认从小到大排序。
  • 第二个程序用priority_queue,其默认为大根堆,这里通过priority_queue<int,vector,greater > S改为小根堆。默认的大根堆参数为priority_queue<int,vector,less > S.另外这里的数据类型是基本数据类型。
  • 第三个程序的数据类型是自定义的结构体,可以采用程序中的方法定义小根堆(重载<)。
  • 第四个程序是将定义小根堆的方法写在了结构体外面( 重载() )。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 15:36:54

Elasticsearch安装与简单配置

目录 1,为什么要用es&#xff1f; 2,安装及配置 安装java 运行Elasticsearch,需安装并配置JDK 各个版本对Java的依赖 查看版本Java –version 安装elastisearch(7.20) JVM配置 修改jvm.options 配置建议 3,Elasticsearch的文件目录结构 4,插件安装 安装国际化分词插…

作者头像 李华
网站建设 2026/7/28 15:36:49

BI项目上线90天验收清单:客户成功总监总结的7个里程碑

导语 很多企业选型BI时&#xff0c;会把大部分精力放在产品功能对比、供应商资质考察上&#xff0c;默认只要选对了产品&#xff0c;项目上线就能顺利产生价值。但我们在大量项目落地跟踪中发现一个反直觉结论&#xff1a;超过六成BI项目的后续失败&#xff0c;根源都不是产品本…

作者头像 李华
网站建设 2026/7/28 15:34:49

Windows 11文件资源管理器性能优化:原理、验证与最佳实践

这次我们来看一个来自微软官方的性能优化更新&#xff1a;Windows 11 文件资源管理器提速。这不是第三方工具&#xff0c;也不是需要复杂设置的技巧&#xff0c;而是微软在系统底层确认的改进。对于每天都要和文件管理器打交道的用户来说&#xff0c;这直接关系到操作流畅度和工…

作者头像 李华
网站建设 2026/7/28 15:34:24

无人机体系化竞争:从单机对抗到系统集成的技术壁垒与工业逻辑

最近和几位做硬件和嵌入式开发的朋友聊天,话题不知怎么就拐到了无人机上。一位朋友提到,他最近看了一些关于无人机在军事和民用领域应用的讨论,发现一个挺有意思的现象:很多人一提到“无人机对抗”,脑子里浮现的还是那种单机对单机、比拼飞行速度和挂载能力的画面,就像电…

作者头像 李华
网站建设 2026/7/28 15:33:56

弹幕盒子:一站式在线弹幕处理工具完整指南

弹幕盒子&#xff1a;一站式在线弹幕处理工具完整指南 【免费下载链接】danmubox.github.io 弹幕盒子 项目地址: https://gitcode.com/gh_mirrors/da/danmubox.github.io 你是否经常为弹幕处理而烦恼&#xff1f;想要合并多P视频的弹幕却找不到合适的工具&#xff1f;需…

作者头像 李华