洛谷$P$2123 皇后游戏 贪心
正解:贪心
解题报告:
传送门!
心血来潮打算把$luogu$提高历练地及其之前的所有专题都打通关,,,$so$可能会写一些比较水的题目的题解$QAQ$
这种题,显然就套路地考虑交换相邻两个人的次序的影响嘛
瞎写下式子,大概是长这样儿(就只考虑更大的那个$C$了昂$QwQ$)
$\left\{\begin{matrix}
max(max(C,A+a_{x})+b_{x},A+a_{x}+a_{y})+b_{y}\\
max(max(C,A+a_{y})+b_{y},A+a_{y}+a_{x})+b_{x}
\end{matrix}\right.$
注意,其实这个是可以化简的,就把外面的给放进去,变成这样儿
$\left\{\begin{matrix}
max(C+b_{x}+b_{y},A+a_{x}+b_{x}+b_{y},A+a_{x}+a_{y}+b_{y})\\
max(C+b_{y}+b_{x},A+a_{y}+b_{y}+b_{x},A+a_{y}+a_{x}+b_{x})
\end{matrix}\right.$
如果现在是要$x$在$y$的前面,则有
$max(C+b_{x}+b_{y},A+a_{x}+b_{x}+b_{y},A+a_{x}+a_{y}+b_{y})\leq max(C
+b_{y}+b_{x},A+a_{y}+b_{y}+b_{x},A+a_{y}+a_{x}+b_{x})$
再设一个$sum_{a}$表示$a_{x}+a_{y}$,$sum_{b}$表示$b_{x}+b_{y}$
原来那个式子就差不多长成这样儿了:
$max(C+sum_{b},A+a_{x}+sum_{b},A+sum_{a}+b_{y})\leq max(C+sum_{b},A
+a_{y}+sum_{b},A+sum_{a}+b_{x})$
显然有$C\leq A+a_{x}$是可以被直接消掉的(过于显然不想证了,,,如果有问题在下面
留言我再随便口胡下证明趴$QAQ$),所以式子又可以变成
$max(A+a_{x}+sum_{b},A+sum_{a}+b_{y})\leq max(A+a_{y}+sum_{b},A+sum_
{a}+b_{x})$
于是显然$A$就可以被消掉了,就变成了
$max(a_{x}+sum_{b},sum_{a}+b_{y})\leq max(a_{y}+sum_{b},sum_{a}+b_{x})$
再又展开得
$max(a_{x}+b_{x}+b_{y},a_{x}+a_{y}+b_{y})\leq max(a_{y}+b_{x}+b_
{y},a_{x}+a_{y}+b_{x})$
把一些东西又提出来得
$max(b_{x},a_{y})+a_{x}+b_{y}\leq max(b_{y},a_{x})+a_{y}+b_{x}$
考虑大力分类讨论$bushi$(其实在这儿的时候大力分类讨论就已经能做出来辣,,,?只是
贼麻烦$QwQ$
考虑继续移项
$max(b_{x},a_{y})-a_{y}-b_{x}\leq max(b_{y},a_{x})-b_{y}-a_{x}$
$-min(b_{x},a_{y})\leq -min(b_{y},a_{x})$
于是终于得出了最后的结论
$min(b_{x},a_{y})\geq min(b_{y},a_{x})$
然而你以为到这儿就完了嘛$QAQ$
$naive$,紫题还是麻油那么好评的鸭$QwQ$
我先放个数据:
```
3
7 3
1 1
1 6
3
1 1
1 6
7 3
```
显然我只是调换了一下大臣们的站位而已的$QwQ$
但是如果直接按那样子排序然后直接算出来$C$,输出会不一样,,,
为什么呢,仔细思考一下,发现是因为满足$min(b_{x},a_{y})\geq min(b_{y},a_{x}
)$的排序方式其实有很多(比如上面两个就都是的$QwQ$
然后在实际计算的过程中,前一个会是:$C_{1}=10\ C_{2}=11\ C_{3}=17$
后一个则是:$C_{1}=2\ C_{2}=8\ C_{3}=12$
简单来说,这个比较不具有传递性,就是这个结论只能适用于相邻两个数之间的比较,当
拓展到多个数时就会$GG$了(具体证明看这个趴,,,太神了没看太懂$TT$
当然这个结论在$min(b_{x},a_{y})\neq min(b_{y},a_{x})$的情况下还是$AC$的,
只是要考虑当$min(b_{x},a_{y})=min(b_{y},a_{x})$的时候要怎么比较
不难想到就,直接对$a$从小到大排就好鸭$QwQ$
然后就做完辣!
#include<bits/stdc++.h>
using namespace std;
#define il inline
#define int long long
#define gc getchar()
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i) const int N=+;
struct node{int x,y;}nod[N]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il bool cmp(node gd,node gs){return min(gd.x,gs.y)!=min(gd.y,gs.x)?min(gd.x,gs.y)<min(gd.y,gs.x):gd.x<gs.x;} main()
{
int T=read();
while(T--)
{
ri n=read();rp(i,,n)nod[i]=(node){read(),read()};sort(nod+,nod++n,cmp);
ri as=nod[].x+nod[].y,sum=nod[].x;
rp(i,,n)
{
sum+=nod[i].x;as=max(as,sum)+nod[i].y;
}
printf("%lld\n",as);
}
}
洛谷$P$2123 皇后游戏 贪心的更多相关文章
- luoguP2123 皇后游戏(贪心)
luoguP2123 皇后游戏(贪心) 题目 洛谷题目chuanso 题解 有一篇好题解,我就懒得推式子了,毕竟打到电脑上还是很难的 牛逼题解传送门 code #include<iostream ...
- Luogu P2123 皇后游戏(贪心)
题目链接:P2123 皇后游戏 如果证明这个题为什么是贪心的话,我是不会的,但是一看这个题目就是一个贪心,然后满足贪心的性质: 都能从两个人(东西)扩展到n个人(东西) 一定能从相邻状态扩展到不相邻的 ...
- 【洛谷P2123】皇后游戏
题目链接 这题的 实际上和"流水调度问题"是一样的 (我是不会告诉你我是看了讨论才知道的) 于是我就翻开了我们教练弄来的一本蓝不拉几的叫做"信息学奥赛一本通·提高篇&qu ...
- 洛谷P1080(NOIP2012)国王游戏——贪心排序与高精度
题目:https://www.luogu.org/problemnew/show/P1080 排序方法的确定,只需任取两个人,通过比较与推导,可以得出ai*bi小的人排在前面: 高精度写的时候犯了些细 ...
- 【流水调度问题】【邻项交换对比】【Johnson法则】洛谷P1080国王游戏/P1248加工生产调度/P2123皇后游戏/P1541爬山
前提说明,因为我比较菜,关于理论性的证明大部分是搬来其他大佬的,相应地方有注明. 我自己写的部分换颜色来便于区分. 邻项交换对比是求一定条件下的最优排序的思想(个人理解).这部分最近做了一些题,就一起 ...
- [洛谷P2123]皇后游戏
很抱歉,这个题我做的解法不是正解,只是恰巧卡了数据 目前数据已经更新,这个题打算过一段时间再去写. 目前在学习DP,这个会暂时放一放,很抱歉 这个题是一个国王游戏的变形(国王游戏就把我虐了qwq) 题 ...
- 洛谷 P2123 皇后游戏 解题报告
P2123 皇后游戏 题意: 给定\(T\)组长为\(n\)的\(A\),\(B\)数组和\(C\)的计算方法,求一种排列方法,使最大的\(C\)最小化. 数据范围: \(1 \le T \le 10 ...
- P2123 皇后游戏
题目背景 还记得 NOIP 2012 提高组 Day1 的国王游戏吗?时光飞逝,光阴荏苒,两年 过去了.国王游戏早已过时,如今已被皇后游戏取代,请你来解决类似于国王游 戏的另一个问题. 题目描述 皇后 ...
- luoguP2123 皇后游戏——微扰法的应用与排序传递性的证明
题目背景 还记得 NOIP 2012 提高组 Day1 的国王游戏吗?时光飞逝,光阴荏苒,两年 过去了.国王游戏早已过时,如今已被皇后游戏取代,请你来解决类似于国王游 戏的另一个问题. 题目描述 皇后 ...
随机推荐
- oracle函数 SUBSTR(c1,n1[,n2])
[功能]取子字符串 [说明]多字节符(汉字.全角符等),按1个字符计算 [参数]在字符表达式c1里,从n1开始取n2个字符;若不指定n2,则从第y个字符直到结束的字串. [返回]字符型 [示例] SQ ...
- 同一个C语言工程不同C文件之间的函数互相调用问题
定义一个function.h文件来声明这些函数: //#ifndef __FUNCTION_H__//#define __FUNCTION_H__ int fun(int,int); int ...
- L05 Laravel 教程 - 电商实战
https://laravel-china.org/courses/laravel-shop https://laravel-china.org/topics/13206/laravel-shop-c ...
- Python进阶04函数的参数对应
我们已经接触过函数(function)的参数(arguments)传递.当时我们根据位置,传递对应的参数.我们将接触更多的 参数传递方式. 回忆一下位置传递: def f(a,b,c): return ...
- intellij idea 搜索
. Ctrl+N 按名字搜索类 相当于eclipse的ctrl+shift+R,输入类名可以定位到这个类文件 就像idea在其它的搜索部分的表现一样,搜索类名也能对你所要搜索的内容多个部分进行匹配 甚 ...
- C#的选择语句练习(一)
1.请输入一个数x,若x<1,则y=x:若1<=x<10,则y=2x-1:若x>=10,则y=3x-11,要求随意输入一个x值,求出y值. 2.输入问题[你有房子吗?],若回答 ...
- python中使用指定GPU
import os os.environ["CUDA_VISIBLE_DEVICES"] = "2" # 或 os.environ["CUDA_VIS ...
- 洛谷P1981 表达式求值 题解 栈/中缀转后缀
题目链接:https://www.luogu.org/problem/P1981 这道题目就是一道简化的中缀转后缀,因为这里比较简单,只有加号(+)和乘号(*),所以我们只需要开一个存放数值的栈就可以 ...
- 2018-8-10-win10-uwp-获得元素绝对坐标
title author date CreateTime categories win10 uwp 获得元素绝对坐标 lindexi 2018-08-10 19:16:51 +0800 2018-2- ...
- springboot 项目打包可运行jar文件
eclipse 运行run as maven bulid ,填入package ,运行打包 java -jar xxx.jar