Luogu P2323「皇后游戏」

算是数论吧,证明出来一个公式之后就可以据此把所有大臣排序,然后求最后一位大臣的奖励即为答案。

证明:

考虑相邻的大臣是否交换。设某个编号为 $ i $ 的大臣,后面一位编号为 $ j $ 。设i前面所有大臣的 $ a $ 值之和为 $ x $ ,设 $ c[i-1] $ 为 $ y $ 。如果不交换 $ i $ 和 $ j $ ,则 $ c $ 值较大的大臣的 $ c $ 值为

$ max(max(x+a_i,y)+b_i,x+a_i+a_j)+b_j $

化简:

$ max(x+a_i+b_i+b_j,,y+b_i+b_j,x+a_i+a_j+b_j) $

同理,如果交换,则较大的C值为

$ max(max(x+a_j,y)+b_j,x+a_i+a_j)+b_i $

化简:

$ max(x+a_j+b_i+b_j,y+b_i+b_j,x+a_i+a_j+b_i) $

即:

交换后两大臣的最大奖励和=$ max(x+a_j+b_i+b_j,y+b_i+b_j,x+a_i+a_j+b_i) $①

不交换两大臣的最大奖励和=$ max(x+a_i+b_i+b_j,y+b_i+b_j,x+a_i+a_j+b_j) $②

假设交换后的情况优于不交换,即①<=②,那么就交换两大臣位置。此时有:

$ max(x+a_j+b_i+b_j,y+b_i+b_j,x+a_i+a_j+b_i) $ <= $ max(x+a_i+b_i+b_j,y+b_i+b_j,x+a_i+a_j+b_j) $ ③

化简(删去公共项$ y+b_i+b_j $):

$ max(x+a_j+b_i+b_j,x+a_i+a_j+b_i) $ <= $ max(x+a_i+b_i+b_j,x+a_i+a_j+b_j) $ ④

继续化简(消去$ x $)

$ max(a_j+b_i+b_j,a_i+a_j+b_i) $ <= $ max(a_i+b_i+b_j,a_i+a_j+b_j) $ ⑤

继续化简(左右两边提出各自系数)

$ max(a_i,b_j)+a_j+b_i $ <= $ max(a_j,b_i)+a_i+b_j $ ⑥

移项:

$ max(a_i,b_j)-a_i-b_j $ <= $ max(a_j,b_i)-a_j-b_i $ ⑥

得出

$ -min(a_i,b_j) $ <= $ -min(a_j,b_i) $ ⑦

$ min(a_i,b_j) $ >= $ min(a_j,b_i) $ ⑧

也就是说,当两个相邻的大臣,其$ a_i,b_i,a_j,b_j $满足⑧时,此时交换后的情况优于不交换。于是此时交换 $ i,j $。

代码实现的话,就是写一个sort用的cmp函数:


bool cmp(const nd &x,const nd &y){
    int ai=x.a,bi=x.b,aj=y.a,bj=y.b;
    return min(bi,aj)>min(ai,bj);
}

注意这里要写成>而不是>=,否则会数组越界导致RE。

用这个cmp,sort一波之后从1到n算出 $ C[1-n] $ ,最后因为C单调递增,所以$ C[n] $ 最大,既为答案。

原文地址:https://www.cnblogs.com/soul-M/p/9567592.html

时间: 2024-11-04 14:40:45

Luogu P2323「皇后游戏」的相关文章

[Luogu 3701] 「伪模板」主席树

[Luogu 3701] 「伪模板」主席树 <题目链接> 这是一道网络流,不是主席树,不是什么数据结构,而是网络流. 题目背景及描述都非常的暴力,以至于 Capella 在做此题的过程中不禁感到生命流逝. S 向 byx 的树中的每一个人连有向边,手气君的树中的每一个人向 T 连有向边,边权为这个人的寿命.统计同一棵树中的膜法师数量 x.如果一个人是主席,那么边权要加上 x.(续得好啊) 然后,如果 byx 树中的一个点 i 能赢手气君树中的点 j,那么连 i->j,边权为 1. 跑最大

AC日记——#2057. 「TJOI / HEOI2016」游戏 LOJ

#2057. 「TJOI / HEOI2016」游戏 思路: 最大流: 代码: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define INF 0x3f3f3f3f #define maxn 2000005 int n,m,s,t,que[maxn],deep[maxn],toth,totl,F[max

「AHOI2014/JSOI2014」骑士游戏

「AHOI2014/JSOI2014」骑士游戏 传送门 考虑 \(\text{DP}\). 设 \(dp_i\) 表示灭种(雾)一只编号为 \(i\) 的怪物的代价. 那么转移显然是: \[dp_i = \min(K_i, S_i + \sum_{j = 1}^{R_i} dp_{v_j})\] 但是我们会发现这个东西是有后效性的... 所以我们会想要用建图然后跑一个最短路什么的来搞... 于是我们观察到上面那个 \(\text{DP}\) 式子中,\(dp_i\) 如果用后面那一项来转移,显然

中国特色程序猿的「钱途」

今天在微博看到一篇文章,程序猿转型书商 年交易额千万元.作为一个合格的中国特色的码农.忍不住想写点儿什么. 程序猿的「钱途」在那里? 从出版业说起 网络作品排到靠前的,都不会太难看,一般人不爱看某部作品也是由于不喜欢这个类型,而此人也不会全不喜欢这些网络作品.究其原因,是由于网络作品都是让人先白看的,看的好了才出了头.而纸质作品就不一定了,排行榜靠前的,有好作品,也有垃圾. 很多大牛都是写了博客,后来出了书.这些书也都不次,可能有人让为不好,是由于技术书不像小说.小说在读故事,技术书是在学知识或

「豆瓣时间」

变着花样,「豆瓣时间」的广告页已经在豆瓣App上轮播了一周.豆瓣er们被雨果.普希金.菏尔德林等大师邀请了那么多天,终于在今天见到这档付费音频节目的真面目. 今天是2017年3月7日,距分答上线近一年,距喜马拉雅FM“123知识狂欢节”过去3个月.如今,罗胖正在炮制概念的路上狂奔,知乎已然形成付费矩阵,科技媒体Pro版遍地开花. 以文艺青年为主要用户群的豆瓣,却还是秉持“慢工出细活”的态度,除了原创+打赏的标配功能,去年最大的动作就是阿北宣布要进军影业.虽然每个行为都指向内容,但都没真正涉及支付

Netflix 不想交「苹果税」,新用户不能在 iOS 端付费了

新上线的电影<黑镜>的开放式结局让 Netflix 又一次刷新了观众的观影体验,而这家已经成为流媒体行业标杆的公司也有了更多的底气拒绝「苹果税」,他们宣布今后新用户将无法从 iOS 渠道付费,建议从网页端订阅服务. 「我们不再支持 iTunes 作为新用户的订阅方式,」一位 Netflix 的发言人向 VentureBeat 证实,不过他补充说老用户仍可在 iOS 端进行应用内购买. Netflix 没有透露这一变化具体是何时上线的,但平台客服表示大概是从上个月底开始的,此外,客服人员还确认老

解构企业实名认证的几大「名场面」

"实名认证"是对用户资料真实性和合规性进行验证审核的方式.面对互联网和电子商务等领域的虚拟性和复杂性,采取有效的措施防范和化解风险,维护企业及个人用户的利益安全.目前,国家已对诸多行业明确提出实名认证合规性要求,如金融.贷款.担保.法律.O2O.物流.旅游.保险.电商.人力资源.租赁.游戏等行业. 实名认证主要通过对×××.手机号.银行卡的多维度多要素认证校验来实现,其中银行卡认证在起到"实名"作用的同时,也是用户提现的信息基础. 在这种背景下,如何快速准确地对大量

一文教你实现「飞机大战」里战机的控制逻辑

? 纵版射击游戏是一种比较经典的游戏类型,从早期的红白机平台到如今的手机平台,一直都有非常经典的游戏作品.纵版射击游戏只需要控制飞行器躲避敌机和子弹并攻击敌机,玩法和操作都非常简单,因此很适合移动平台上的操作.曾经微信平台红极一时的「飞机大战」相信每个人都玩过,那么今天就来教大家如何实现游戏里战机的控制逻辑. 1.首先创建一个游戏场景 GameScene,在场景中添加游戏背景和今天的主角——战斗机: 2.接下来创建战斗机的控制脚本 GamePlane.js: 3.创建成功后就可以进行编辑了,战斗

「留言板」

其实这是个 不正经的->「留言板」<-… |于是rt求留言 言 留言 留个言 求留个言 跪求留个言 麻烦您留个言 求求您了留个言 能不能过来留个言 爱留不留最好留个言 走过路过都要来留个言 有话没话您最好来留个言 没话找话您也得过来留个言 如果您无聊就来给我我留个言 然而没人搭理我看到您就留个言 如果有事您一定要过来这里留个言 我不知道这东西能不能让你们留个言 我可能疯了于是写了这个逼你们留个言 真的是我自己写的如果信了您就来留个言 …… 我真是闲的…… 于是继续闲 我来归未得 是客异乡愁 蒟