Codeforces Round #693 (Div. 3)
比赛链接
Codeforces Round #693 (Div. 3)
D.Even-Odd Game
Alice 和 Bob 玩游戏
给定含 个数字的数列
两人轮流进行游戏,Alice 先手
每一轮一人从数列中选取一个数字并将这个数字从数列中删掉
如果 Alice 选择的数字是偶数,那么 Alice 得分加上这个数字,否则 Alice 不加分
如果 Bob 选择的数字是奇数,那么 Bob 得分加上这个数字,否则 Bob 不加分
假设二人都采取最优策略,最后得分高的获胜,请输出胜者(Alice 或者 Bob),或者指明这是平局(Tie)
输入
多组测试数据
先输入 表示有 组测试数据()
接下来 组数据,每组数据先输入 (),接下来 个数字描述数列
保证每个测试点 组数据的 之和不超过
输出
每组数据一行
- 如果 Alice 赢了,输出
Alice
- 如果 Bob 赢了,输出
Bob
- 如果二人得分相同,输出
Tie
解题思路
博弈论
博弈策略:两人都选择最大的数
假设两人某时刻分数为 ,最终结果为两者的差值 ,现在轮到先手决策,假设现在最大值为 ,如果先手选择该数,若该数为偶数,则最终差值为 ,此时选最大值对先手最优,反之如果该数为奇数, 本来是作为 的一部分,但被先手选择了,即最终差值为 ,相当于给先手加分了,故每次选择最大值为最优策略
- 时间复杂度:
代码
E. Correct Placement
Polycarp想要给他的朋友们拍一张照片,他的朋友们都有h(身高)、w(宽度)两个数值,当一个人A的身高比另外一个人B的身高矮,且宽度比他小时,A可以站在B的前面,或者当A身高比B宽度小时,且宽度比B身高小时,A可以躺在B前面(小,意为严格小于)。
现在Polycarp想知道每个人是否有对应的人可以站或躺在他的前面,如果有,则输出那个人的编号,若有多个,则输出任意一个,如果没有则输出-1。
输入:第一行一个整数t,代表t组数据。
接下来一个整数n,代表n个人。
随后n行,每行两个整数,代表每个人的宽度和身高。
输出:一共有t组,每组n个整数,代表可以站在第i个人前面的人的编号。
解题思路
思维
要求为每个二元组 找到另外一个 或 使得 或 ,即 的最大值和最小值分别大于 的最大值和最小值,可先按第一关键字排序,在按第二关键字排序,由于是按第一关键字排序,所以对于每个数答案一定在前面,所以可以遍历对每个数求解答案,即记录每个数前面第一关键字不同且第二关键字最小的下标,然后判断该下标是否满足要求, 设置一个变量 ,表示第一关键字相同时最小的第二关键字的下标,当出现不同第一关键字时,由于 表示的是不同的第一关键字,此时考虑是否更新下标,同时更新变量
- 时间复杂度:
代码
__EOF__

本文链接:https://www.cnblogs.com/zyyun/p/16411098.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!