洛谷P2123 皇后游戏
题目背景
还记得 NOIP 2012 提高组 Day1 的国王游戏吗?时光飞逝,光阴荏苒,两年过去了。国王游戏早已过时,如今已被皇后游戏取代,请你来解决类似于国王游戏的另一个问题。
题目描述
皇后有 n 位大臣,每位大臣的左右手上面分别写上了一个正整数。恰逢国庆节来临,皇后决定为 n 位大臣颁发奖金,其中第 i 位大臣所获得的奖金数目为第i-1 位大臣所获得奖金数目与前 i 位大臣左手上的数的和的较大值再加上第 i 位大臣右手上的数。
形式化地讲:我们设第 i 位大臣左手上的正整数为 ai,右手上的正整数为 bi,则第 i 位大臣获得的奖金数目为 ci可以表达为:
当然,吝啬的皇后并不希望太多的奖金被发给大臣,所以她想请你来重新安排一下队伍的顺序,使得获得奖金最多的大臣,所获奖金数目尽可能的少。
注意:重新安排队伍并不意味着一定要打乱顺序,我们允许不改变任何一位大臣的位置。
输入输出格式
输入格式:
第一行包含一个正整数 T,表示测试数据的组数。
接下来 T 个部分,每个部分的第一行包含一个正整数 n,表示大臣的数目。
每个部分接下来 n 行中,每行两个正整数,分别为 ai和 bi,含义如上文所述。
输出格式:
共 T 行,每行包含一个整数,表示获得奖金最多的大臣所获得的奖金数目。
输入输出样例
输入样例#1: 复制
1 3 4 1 2 2 1 2
输出样例#1: 复制
8
输入样例#2: 复制
2 5 85 100 95 99 76 87 60 97 79 85 12 9 68 18 45 52 61 39 83 63 67 45 99 52 54 82 100 23 54 99 94 63 100 52 68
输出样例#2: 复制
528 902
说明
按照 1、2、3 这样排列队伍,获得最多奖金的大臣获得奖金的数目为 10;
按照 1、3、2 这样排列队伍,获得最多奖金的大臣获得奖金的数目为 9;
按照 2、1、3 这样排列队伍,获得最多奖金的大臣获得奖金的数目为 9;
按照 2、3、1 这样排列队伍,获得最多奖金的大臣获得奖金的数目为 8;
按照 3、1、2 这样排列队伍,获得最多奖金的大臣获得奖金的数目为 9;
按照 3、2、1 这样排列队伍,获得最多奖金的大臣获得奖金的数目为 8。
当按照 3、2、1 这样排列队伍时,三位大臣左右手的数分别为:
(1, 2)、(2, 2)、(4, 1)
第 1 位大臣获得的奖金为 1 + 2 = 3;
第 2 位大臣获得的奖金为 max{3, 3} + 2 = 5;
第 3 为大臣获得的奖金为 max{5, 7} + 1 = 8。
对于全部测试数据满足:T \le 10T≤10,1 \le n \le 20\ 0001≤n≤20 000,1 \le a_i, b_i \le 10^91≤ai,bi≤109。
玄学:
推导过程在这里:https://blog.csdn.net/liuzibujian/article/details/81435356
最后一步有点看不懂。。。。
#include<bits/stdc++.h>
#define lom long long
using namespace std;
struct node
{int x,y,d;bool operator <(const node& a)const{//magic,do not touch!if (d!=a.d) return d<a.d;if (d<=0) return x<a.x;return y>a.y;}
}a[20005];
int main()
{int T;cin>>T;while(T--){int n;lom sum=0,ans=0;cin>>n;for(int i=1;i<=n;i++){cin>>a[i].x>>a[i].y;if (a[i].x>a[i].y) a[i].d=1;else if (a[i].x<a[i].y) a[i].d=-1;else a[i].d=0;}sort(a+1,a+n+1);for(int i=1;i<=n;i++){sum+=a[i].x;ans=max(sum,ans)+a[i].y;}cout<<ans<<endl;}return 0;
}
都是些什么神仙。。
洛谷P2123 皇后游戏相关推荐
- 洛谷 P2197 nim游戏
洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...
- 洛谷 P1558 色板游戏
传送门:洛谷 P1558 色板游戏 算法分析:观察到数据范围:\(1\leq T\leq 30\) ,考虑使用二进制来进行状态压缩 将颜色\(x\)表示为 \(1<<(x-1)\) 即 \ ...
- 洛谷 P1129 矩阵游戏
洛谷 P1129 矩阵游戏 题目链接 题目描述 小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个 n×n 黑白方阵进行(如同国际象棋一般,只是颜色是 ...
- 洛谷 P3041 视频游戏的连击Video Game Combos(AC自动机+拓扑排序+数位DP)
洛谷 P3041 视频游戏的连击Video Game Combos 难度一般,不过这个数位DP其实应该叫做记忆化搜索 题意:玩游戏时可以通过按键组合打出combo技能:然后是已知N个combo的按键方 ...
- 动态规划——洛谷_P1057传球游戏
题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...
- 洛谷——P1000 超级玛丽游戏
P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 另外强烈推荐新用户必读贴 题目描述 超级玛丽是一个非常经典的游戏. ...
- 洛谷P1000 超级玛丽游戏C++题解
首先我们看这道题的题目"超级玛丽游戏",第一道题就让我们写个游戏出来.结果点进去一看,顿时觉得这道题是在开玩笑,本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续 ...
- 洛谷 P4815 狼人游戏 题解
洛谷 P4815 [CCO2014] 狼人游戏 首先题目中有 3 3 3 个限制: 没有机器人又被指控又被保护: 没有机器人被指控或保护一次以上: 如果有一个编号为 A A A 机器人指控或保护编号为 ...
- 【模拟】洛谷 P1000 超级玛丽游戏
题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. *** ...
- 洛谷 P1080 国王游戏
这是一道贪心题,贪心的策略是将大臣们按左右手金币的乘积升序排列,具体证明过程可以参见洛谷大佬的题解,这里就不再赘述了. 因为本菜鸡之前没有接触过高精度运算,对C++的运算符重载也不太熟练,所以正好借此 ...
最新文章
- C++从键盘读取字符
- (转)ZeroMQ的模式-Requset-Reply
- php 调用url field,使用 PHP curl 调用 API,如何传递如下格式的 POSTFIELD?
- 如何用Dart写一个单例
- mysql存储过程与自定义函数
- MyBatis框架学习:<select>节点中的resultType和resultMap属性
- python自学入门教程-Python自学入门基础教程-数据类型
- HDU4007 Dave [杂题]
- STM32 基础系列教程 36 - Lwip_dns
- 【深度学习】array, list, tensor,Dataframe,Series之间互相转换总结
- git关联远程仓库和删除远程仓库
- 如何在没有安全启动或 TPM 2.0 的传统 BIOS 上安装 Windows 11
- [swift] LeetCode 347. Top K Frequent Elements
- python海龟交易策略_【手把手教你】用Python量化海龟交易法则
- 基于node.js的express使用mysql语句在插入数据时防重插入
- 路由器k2固件改系统时间
- 【Matplotlib:隐藏边框,显示单个网格线,设置刻度间隔,隐藏刻度线】
- zend framework 1.5.2 中实现梅花雪1.0树状菜单
- 电信客户流失数据分析(二)
- PCB线路板的制作工艺流程分享!2021-08-21
热门文章
- 微信小程序获取用户微信绑定手机号
- LAMP 技术简介(5)
- PON光通道损耗的计算
- Python 数据获取(四)—— BeautifulSoup获取小说内容
- 画圆形图片的几种方式
- 设计用于环境监测的无线传感网多跳数据采集、传输系统。在PC机上能显示当前测得的温/湿度、光照等环境信息。当光照超过一定阈值时,感知节点通过LED信号灯给以报警。
- 英读廊——随时来串门吧!是真心的邀请,还是塑料的友情?
- flex justify-content: space-around;和justify-content: space-evenly;的区别
- 我喜欢生命本来的样子--周国平
- 浙大计算机就业方向,浙大四大 王牌专业,毕业后工作待遇高,发展前景非常广阔...