题意

还记得 NOIP 2012 提高组 Day1 的国王游戏吗?时光飞逝,光阴荏苒,四年过去了。早已过时的国王游戏如今已被皇后游戏取代,请你来解决类似于国王游戏的另一个问题。

皇后有 n 位大臣,每位大臣的左右手上面分别写上了一个正整数。恰逢劳动节来临,皇后决定为 n 位大臣颁发奖金,其中第 i 位大臣所获得的奖金数目为第 i-1 位大臣所获得奖金数目与前 i 位大臣左手上的数的和的较大值再加上第 i 位大臣右手上的数。

形式化地讲:我们设第 i 位大臣左手上的正整数为 ai,右手上的正整数为 bi, 则第 i 位大臣获得的奖金数目为 ci 可以表达为:

\[$$c_i=\begin{cases}a_1+b_1 & i=1\\max \{c_{i-1},\sum^{i}_{j=1}{a_j} \} +b_i & 2 \le i \le n\\\end{cases}\$$]

当然,吝啬的皇后并不希望太多的奖金被发给大臣,所以她想请你来重新安排一下队伍的顺序,使得获得奖金最多的大臣,所获奖金数目尽可能的少。

注意:重新安排队伍并不意味着一定要打乱顺序,我们允许不改变任何一位大臣的位置。

【样例说明 1】

按照 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。

【数据规模与约定】

所有测试点的数据规模如下:

测试点编号

n的规模

T的规模

约定

1

=1

=1

2

=2

3

=5

=5

4

=9

5

=15

6

=15

7

=16

8

=16

9

=3000

=10

ai=bi

10

=3000

11

=5000

bi=ai+1

12

=5000

13

=10000

14

=10000

15

=20000

16

=20000

17

=30000

题解

对于排序问题考虑构造一种排序方式使得任意交换两个数不会更优。设两个大臣i,j,a1...i=x,ci−1=yi,j,a_{1...i}=x,c_{i-1}=yi,j,a1...i​=x,ci−1​=y,则要使:
max(y+bi+bi+1,x+ai+bi,x+ai+ai+1+bi+1)≤max(y+bi+1+bi,x+ai+1+bi+1+bi,x+ai+ai+1+bi)max(y+b_i+b_{i+1},x+a_i+b_i,x+a_i+a_{i+1}+b_i+1)\le max(y+b_i+1+b_i,x+a_{i+1}+b_i+1+b_i,x+a_i+a_{i+1}+b_i)max(y+bi​+bi+1​,x+ai​+bi​,x+ai​+ai+1​+bi​+1)≤max(y+bi​+1+bi​,x+ai+1​+bi​+1+bi​,x+ai​+ai+1​+bi​)
发现第一项是相同的,且完全可以忽略它(如果忽略后不满足不等式,那么交换后还满足原不等式)。
于是化简得:min(ai,bj)≤min(bi,aj)min(a_i,b_j)\le min(b_i,a_j)min(ai​,bj​)≤min(bi​,aj​)。
直接按照这个排序会有问题,因为这不满足传递性,考虑将它划分成若干个可传递的范围:按照a,ba,ba,b的大小先分一类,a<ba<ba<b的一定在前,a>ba>ba>b的一定在后,然后对于两边分别按照aaa升序、bbb降序排序即可。

DTOJ 2746. 皇后游戏(game)相关推荐

  1. 我来谈谈我的游戏经历和“游戏三境界”

    说到三境界,很多人怕是首先想到王国维: 王国维在<人间词话>说:古今之成大事业.大学问者,必经过三种之境界:"昨夜西风凋碧树.独上高楼,望尽天涯路."此第一境也. &q ...

  2. 10段代码教你玩转C++

    1.随机迷宫: #include <stdio.h>#include <conio.h>#include <windows.h>#include <time. ...

  3. 大学期间所有课设及大作业源代码

    程序员练成记 出处:牟尼的专栏 http://blog.csdn.net/u012027907 记得刚上大一时,那时对这个专业(软件工程)很陌生,甚至对电脑都很陌生,有时还有点儿害怕,因为我在进入大学 ...

  4. 基础算法——基本思想

    一.枚举:通过从可能的集合中枚举答案,判断题目的条件是否成立. 1.确定枚举的范围,减少枚举的空间. 2.选择合适的枚举顺序. 二.构造:从形式上来看,问题的答案往往具有某种规律性,使得在问题规模迅速 ...

  5. Java黑皮书课后题第7章:***7.36(游戏:八皇后问题)经典的八皇后难题是要将八个皇后放在棋盘上,任何两个皇后都不能相互攻击(没有两个皇后在同行、同列、同一对角线)。编写程序显示一个解决方案

    7.36(游戏:八皇后问题)经典的八皇后难题是要将八个皇后放在棋盘上,任何两个皇后都不能相互攻击(没有两个皇后在同行.同列.同一对角线).编写程序显示一个解决方案 题目 题目描述 破题 题目 题目描述 ...

  6. 第七章第三十六题(游戏:八皇后问题)(Game: Eight Queens)

    第七章第三十六题(游戏:八皇后问题)(Game: Eight Queens) ***7.36(游戏:八皇后问题)经典的八皇后难题是要将八个皇后放在棋盘上,任何两个皇后都不能互相攻击(即没有两个皇后是在 ...

  7. DTOJ 4339. 游戏

    题意 小AA和小YY得到了<喜羊羊和灰太狼>的电影票,都很想去观看,但是电影票只有一张,于是他们用智力游戏决定胜负,赢得游戏的人可以获得电影票. 在 N∗MN*MN∗M 的迷宫中有一个棋子 ...

  8. Prolog学习:数独和八皇后问题

    上一篇简单介绍了下Prolog的一些基本概念,今天我们来利用这些基本概念解决两个问题:数独和八皇后问题. 数独 数独是一个很经典的游戏: 玩家需要根据n×n盘面上的已知数字,推理出所有剩余空格的数字, ...

  9. 中国象棋_通过设计国际象棋游戏来了解策略模式

    中国象棋 今天,我们将借助一个示例来尝试了解策略模式. 我们将考虑的示例是国际象棋游戏. 这里的目的是解释策略模式,而不是构建全面的国际象棋游戏解决方案. 策略模式:策略模式被称为行为模式–用于管理对 ...

  10. 八皇后java_经典八皇后问题:Java语言

    问题描述:将八个皇后放在棋盘上,任何两个皇后都不能互相攻击(即没有任何两个皇后在同一行.同一列或者同一对角线上)如图所示,题目来自于<java语言程序设计:基础篇>练习题6.20和6.22 ...

最新文章

  1. Tensorflow的基本运行方式--demo程序
  2. 4万字长文ClickHouse应用实战-物化视图在微信的实践
  3. 云炬随笔20210819
  4. Node.js环境搭建npm安装
  5. C++ Lists(链表)
  6. #pragma pack(push,1)与#pragma pack(1)的区别(转)
  7. 08.QT中sqlite3数据库基本操作
  8. Build DCM4chee2
  9. Docker 镜像优化与最佳实践
  10. “n个球放入m个盒子是否为空”的方案数
  11. 读取xml文件分析 EntityName 时出错的解决方案
  12. jmeter录制脚本(代理)
  13. 九款好看的后台管理系统登录模板
  14. 阿里云的DMZ区网络
  15. 服务器端渲染-Vue SSR搭建
  16. 公司用户画像项目总结
  17. jupyter的环境问题:在jupyter中添加我们想要的环境
  18. springboot + 操作日志添加
  19. origin橘子平台中文设置教程
  20. ARP渗透与攻防(二)之断网攻击

热门文章

  1. 个人认为制作系统盘(U盘启动盘)最干净的方式?
  2. java 格林尼治生僻时间转换
  3. Unity2019安卓平台新手安装设置建议
  4. Python创建微信机器人
  5. 最基本的几种 CSS 文字滤镜效果 - 蓝色理想
  6. SSLv3 协议漏洞‘POODLE’修复与相关概念
  7. nginx 三级域名泛解析并指向某文件 带参数
  8. 北京地铁21号线_北京迎来地铁22号线,全长81公里,沿线的市民有福了
  9. Ps 钢笔工具的使用
  10. cer证书的命令导入