好题。

网上看到的范围是:\(T \leq 10\),$ n \leq 50000$, $ a_i,b_i \leq 10^9$。

我们按照贪心惯常的思路考虑交换相邻的两个人。容易发现,对于相邻的两个人,总是后一个人的答案更大一点。而我们的目的,是让两个人中后一个人的答案更小(这样可以让这两个人后面的答案更小)。

设当前在考虑 \(i\) 与\(i+1\)。记前\(i-1\)号的和为\(sum\)。欲使后面的人答案更小一点,假设\(i\)在前是后面的人答案更小一点,则有

\[\max(\max(sum+a_i,c_{i-1})+b_i, sum+a_i+a_{i+1})+b_{i+1}
\]

\[\max(\max(sum+a_{i+1},c_{i-1})+b_{i+1}, sum+a_i+a_{i+1})+b_i
\]

前者小于后者。

将它们合并到一个max里头,有

\[\max(sum+a_i+b_i+b_{i+1}, c_{i-1}+b_i+b_{i+1}, sum+a_i+a_{i+1}+b_{i+1})
\]

\[\max(sum+a_{i+1}+b_i+b_{i+1}, c_{i-1}+b_i+b_{i+1}, sum+a_i+a_{i+1}+b_i)
\]

前者小于后者。

发现第二项相同,可以同时抛去。(想不通的话想一想$ \max(a, 1)<\max(b, 1)$是怎么回事就好了)

得到

\[\max(sum+a_i+b_i+b_{i+1}, sum+a_i+a_{i+1}+b_{i+1})
\]

\[\max(sum+a_{i+1}+b_i+b_{i+1}, sum+a_i+a_{i+1}+b_i)
\]

前者小于后者。

同时抛去 \(sum\) 得到

\[\max(a_i+b_i+b_{i+1}, a_i+a_{i+1}+b_{i+1})
\]

\[\max(a_{i+1}+b_i+b_{i+1}, a_i+a_{i+1}+b_i)
\]

前者小于后者。

同时减去$ a_i+a_{i+1}+b_i+b_{i+1}$得到

\[\max(-a_{i+1}, -b_i)<max(-a_i, -b_{i+1})
\]

化开得到

\[\min(a_i, b_{i+1})<\min(a_{i+1}, b_i)
\]

这就是排序条件。

然后就很简单啦qwq。

#include <algorithm>
#include <iostream>
#include <cstdio>
using namespace std;
struct Node{
long long aa, bb;
}nd[50005];
int T, n;
long long dp[50005], sum;
bool cmp(Node x, Node y){
return min(x.aa, y.bb)<min(y.aa, x.bb);
}
int main(){
cin>>T;
while(T--){
scanf("%d", &n);
for(int i=1; i<=n; i++)
scanf("%lld %lld", &nd[i].aa, &nd[i].bb);
sort(nd+1, nd+1+n, cmp);
sum = dp[0] = 0;
for(int i=1; i<=n; i++){
sum += nd[i].aa;
dp[i] = max(dp[i-1], sum) + nd[i].bb;
}
printf("%lld\n", dp[n]);
}
return 0;
}

luogu2123 皇后游戏的更多相关文章

  1. P2123 皇后游戏

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

  2. [洛谷P2123]皇后游戏

    很抱歉,这个题我做的解法不是正解,只是恰巧卡了数据 目前数据已经更新,这个题打算过一段时间再去写. 目前在学习DP,这个会暂时放一放,很抱歉 这个题是一个国王游戏的变形(国王游戏就把我虐了qwq) 题 ...

  3. luoguP2123 皇后游戏——微扰法的应用与排序传递性的证明

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

  4. 洛谷 P2123 皇后游戏 解题报告

    P2123 皇后游戏 题意: 给定\(T\)组长为\(n\)的\(A\),\(B\)数组和\(C\)的计算方法,求一种排列方法,使最大的\(C\)最小化. 数据范围: \(1 \le T \le 10 ...

  5. Luogu P2123 皇后游戏(贪心)

    题目链接:P2123 皇后游戏 如果证明这个题为什么是贪心的话,我是不会的,但是一看这个题目就是一个贪心,然后满足贪心的性质: 都能从两个人(东西)扩展到n个人(东西) 一定能从相邻状态扩展到不相邻的 ...

  6. luoguP2123 皇后游戏(贪心)

    luoguP2123 皇后游戏(贪心) 题目 洛谷题目chuanso 题解 有一篇好题解,我就懒得推式子了,毕竟打到电脑上还是很难的 牛逼题解传送门 code #include<iostream ...

  7. 【流水调度问题】【邻项交换对比】【Johnson法则】洛谷P1080国王游戏/P1248加工生产调度/P2123皇后游戏/P1541爬山

    前提说明,因为我比较菜,关于理论性的证明大部分是搬来其他大佬的,相应地方有注明. 我自己写的部分换颜色来便于区分. 邻项交换对比是求一定条件下的最优排序的思想(个人理解).这部分最近做了一些题,就一起 ...

  8. luogu P2123 皇后游戏

    传送门 跟国王游戏一样的分析 考虑相邻的两个大臣,设他们前面的\(\sum a_j\)为\(s\),同时注意到后面人的贡献更大 所以\(i\)在前面时,\(c_j=\max(\max(c_{last} ...

  9. CH模拟赛 皇后游戏

    /* 做的时候手推了一下n=2的四种情况,再排一下序就可以了,证明不是很严谨,但我想这就行了,毕竟全是套路 */ #include<iostream> #include<cstdio ...

随机推荐

  1. sql问题:备份集中的数据库备份与现有的 '办公系统' 数据库不同

    解决方法:把备份的数据库从原有的地方先分离,再拷贝一份,在需要还原的服务器上附加到数据库中,在根数据库上点击“还原数据库”,选择需要还原的数据库名称,以及还原的bak备份文件,在选择“选项”,勾选上“ ...

  2. SharePoint运行状况分析器有关磁盘空间不足的警告

    对于负责管理SharePoint内部部署安装的SharePoint管理员,SharePoint Health Analyzer是一款出色的工具.此功能不仅有助于解决服务器故障和服务失败的问题,还提供了 ...

  3. Servlet详解之两个init方法的作用

    在Servlet中 javax.servlet.GenericServlet类 继承自java.lang.Object 实现了Serializable,,servlet ,ServletConfig ...

  4. Python之邮件发送

    Python的smtplib提供了一种很方便的途径用来发送电子邮件,它有SMTP协议进行简单的封装,可以使用SMTP对象的sendmail方法发送邮件,通过help()查看SMTP所提供的方法如下: ...

  5. 洛谷 P3019 [USACO11MAR]会见点Meeting Place

    题目背景 征求翻译.如果你能提供翻译或者题意简述,请直接发讨论,感谢你的贡献. 题目描述 Bessie and Jonell are great friends. Since Farmer John ...

  6. windows网络和共享中心“查看基本网络信息并设置连接”为“未知”的解决方案

    存在问题“查看基本网络信息并设置连接”为“未知”.如图所示: 解决步骤 运行services.msc 启动Network List Service 若无法启动,打开其属性,选择“登录”选项卡,将启动类 ...

  7. [转]maven项目部署到tomcat

    其实maven项目部署到tomcat的方式很多,我从一开始的打war包到tomcat/webapps目录,到使用tomcat-maven插件,到直接使用servers部署,一路来走过很多弯路. 下面就 ...

  8. 解决nginx bind() to 0.0.0.0:80 failed 问题

    nginx的配置文件一开始默认是80端口,出现这个错误多半是80端口已经被占用.这时候只需要把 server { listen 8088; server_name localhost lcsf.com ...

  9. Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] C A Weakness and Poorness (三分)

    显然f(x)是个凹函数,三分即可,计算方案的时候dp一下.eps取大了会挂精度,指定循环次数才是正解. #include<bits/stdc++.h> using namespace st ...

  10. uva 1601 poj 3523 Morning after holloween 万圣节后的早晨 (经典搜索,双向bfs+预处理优化+状态压缩位运算)

    这题数据大容易TLE 优化:预处理, 可以先枚举出5^3的状态然后判断合不合法,但是由于题目说了有很多墙壁,实际上没有那么多要转移的状态那么可以把底图抽出来,然后3个ghost在上面跑到时候就不必判断 ...