DTOJ 2746. 皇后游戏(game)

题意

还记得 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

按照 123 这样排列队伍,获得最多奖金的大臣获得奖金的数目为 10

按照 132 这样排列队伍,获得最多奖金的大臣获得奖金的数目为 9

按照 213 这样排列队伍,获得最多奖金的大臣获得奖金的数目为 9

按照 231 这样排列队伍,获得最多奖金的大臣获得奖金的数目为 8

按照 312 这样排列队伍,获得最多奖金的大臣获得奖金的数目为 9

按照 321 这样排列队伍,获得最多奖金的大臣获得奖金的数目为 8

当按照 321 这样排列队伍时,三位大臣左右手的数分别为:

(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 , a 1... i = x , c i − 1 = y i,j,a_{1...i}=x,c_{i-1}=y i,ja1...i=x,ci1=y,则要使:
m a x ( y + b i + b i + 1 , x + a i + b i , x + a i + a i + 1 + b i + 1 ) ≤ m a x ( 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+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)
发现第一项是相同的,且完全可以忽略它(如果忽略后不满足不等式,那么交换后还满足原不等式)。
于是化简得: m i n ( a i , b j ) ≤ m i n ( b i , a j ) min(a_i,b_j)\le min(b_i,a_j) min(ai,bj)min(bi,aj)
直接按照这个排序会有问题,因为这不满足传递性,考虑将它划分成若干个可传递的范围:按照 a , b a,b a,b的大小先分一类, a < b a<b a<b的一定在前, a > b a>b a>b的一定在后,然后对于两边分别按照 a a a升序、 b b b降序排序即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值