【牛客网-每日一题3.25】tokitsukaze and Soldier
时间:2020-03-26
本文章向大家介绍【牛客网-每日一题3.25】tokitsukaze and Soldier,主要包括【牛客网-每日一题3.25】tokitsukaze and Soldier使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
【题目链接】:传送门
【讲解】:传送门
【题解】
1、如果我们确定团队的大小Size,我们可以选择Size名士兵(其s>=Size)
2、根据(1)对士兵进行s从大到小排序
3、我们要做的是:控制团的大小S,同时确保val最大化,
所以我们对排序完的士兵依次添加,当s<Size时,依次弹出最小值。利用最小堆,维护区间中的最值问题。
1 #include<queue> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 typedef long long ll ; 8 const int N = 1e6 + 10 ; 9 typedef struct Node{ 10 int s,v; 11 //s size , v value 12 }Node; 13 Node a[N] ; 14 15 bool cmp( Node u , Node v ){ 16 return u.s > v.s ; 17 } 18 19 int main() 20 { 21 int n ; 22 //输入后排序,以s从小到大 23 scanf("%d",&n); 24 for( int i = 1 ; i <= n ; i++ ){ 25 scanf("%d%d",&a[i].v,&a[i].s); 26 } 27 sort( a + 1 , a + 1 + n , cmp ); 28 29 int Sz = 0 ; 30 priority_queue< int , vector<int> , greater<int> > Q ; 31 ll ans = 0 , sum = 0 ; 32 for( int i = 1 ; i <= n ; i++ ){ 33 Q.push( a[i].v ); 34 sum += a[i].v ; 35 Sz ++ ; 36 while( Sz > a[i].s ){ 37 //printf(" %d , %lld\n",i,sum) ; 38 sum -= (int) Q.top() ; 39 Q.pop(); 40 Sz -- ; 41 } 42 ans = max( ans , sum ); 43 } 44 printf("%lld\n",ans); 45 return 0 ; 46 }
原文地址:https://www.cnblogs.com/Osea/p/12573140.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法