[luogu2123] 皇后游戏

那她既然都说到老国王了,那肯定就是贪心了。

先声明两个引理:

引理1:若 \(\max(c,a)<\max(c,b)\) 时,定有 \(a<b\)

引理2:\(\max(a,b)-a-b=-\min(a,b)\)

证明就不说了,非常好证。

考虑 \(i,j\) 两大臣孰先孰后,假如 \(i\) 在前面更优,\(x\) 表示所有在他们前面的大臣的 \(\sum a\)\(y\) 表示在他们前面的第一名大臣的 \(c\) 值,则有:

\[\max(max(y,x+a_i)+b_i,x+a_i+a_j)+b_j<\max(max(y,x+a_j),x+a_j+a_i)+b_i \]

\[\max(y+b_i+b_j,x+a_i+b_i+b_j,x+a_i+a_j+b_j)<\max(y+b_i+b_j,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)<\max(x+a_j+b_i+b_j,x+a_i+a_j+b_i)(引理1) \]

\[\max(b_i,a_j)+a_i+b_j<\max(b_j,a_i)+a_j+b_i \]

\[\max(b_i,a_j)-b_i-a_j<\max(b_j,a_i)-b_j-a_i \]

\[-\min(b_i,a_j)<-\min(b_j,a_i)(引理2) \]

\[\min(b_i,a_j)>min(b_j,a_i) \]

到这里已经不能再化简了,但是该式不具有可传递性。

考虑按照 \(a_i\)\(b_i\) 的大小关系进行分组,进行组内排序和组外排序:

  1. \(a_i<b_i\),此时原不等式等价于 \(a_i<a_j\),因此按 \(a\) 降序排序。
  2. \(a_i=b_i\),随便排就行。
  3. \(a_i>b_i\),此时原不等式等价于 \(b_i>b_j\),因此按 \(b\) 升序排序。

关于组外排序,若 \(i\) 属于第一组,\(j\) 属于第二组,则有 \(b_i>a_i\),成立,因此第一组在第二组前,化简原理类似于引理1。

同理,第二组在第三组前。

那直接排序,然后依题意模拟即可。时间复杂度 \(O(n\log n)\)

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
struct hand{int a,b;
}peo[20005];
int d(hand x){if(x.a==x.b) return 0;return ((x.a>x.b)?1:-1);
}int cmp(hand x,hand y){if(d(x)!=d(y)) return d(x)<d(y);if(d(x)>0) return x.b>y.b;return x.a<y.a;
}void solve(){cin>>n;for(int i=1;i<=n;i++)cin>>peo[i].a>>peo[i].b;sort(peo+1,peo+n+1,cmp);int s=0,c=0;for(int i=1;i<=n;i++){s+=peo[i].a;c=max(c,s)+peo[i].b;}cout<<c<<"\n";
}signed main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);int t;cin>>t;while(t--) solve();return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/830681.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【NX/UG】解决:使用重用库的零件,下次打开发现零件丢失问题

NX12.0: 1、找到文件->实用工具->用户默认设置2、基本环境->重用库->可重用组件->更改组件目录[Windows],将目录更改到当前文件工作目录即可-------------------------------------------------------------------------------------------------------------…

腾讯云云服务器数据迁移实战方案

前言 我在三年前购买的腾讯云服务器今年过期咯, 今年的腾讯云双十一活动也是给力优惠攻略极速观看: 刻不容缓腾讯云双十一活动羊毛攻略!!!-腾讯云开发者社区-腾讯云 极速通道购买: 腾讯云11.11上云拼团Go 经过上面的攻略我购买了一个 2h4g 和 4h8g 的云服务器, 我将 Mysql 、Re…

20222418 2024-2025-1 《网络与系统攻防技术》实验四实验报告

1.实验内容 一、恶意代码文件类型标识、脱壳与字符串提取 对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下: (1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具; (2)使用…

Windows 10 配置为 NTP 时间服务器的操作步骤及解析

之前有过将 Windows 10 配置为 NTP 时间服务器的经历,但是没有做文字记录。 这次又需要做一样的配置,对网上的资料和配置细节不太确定,所以设置完后写了本篇记录。 操作步骤设置服务器类型为 NTP;修改注册表键值 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32…

20222302 2024-2025-1 《网络与系统攻防技术》实验四实验报告

1.实验内容 1.1恶意代码文件类型标识、脱壳与字符串提取 对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下: (1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具; (2)使用超…

2024-2025-1 20241415 《计算机基础与程序设计》第七周学习总结

2024-2025-1 20241415 《计算机基础与程序设计》第七周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第七周作业这个作业的目标 数组与链表、基于数组和基于链表实现数据结构、无序表与有序表、…

MAC下使用Clion软件进行STM32的HAL库的开发

1、准备的软件 (1)clion: 链接:https://www.jetbrains.com.cn/clion/ 破解:方法可在某宝上去找。 (2)STM32CubeMX与ST_Link: 链接:https://www.st.com.cn/content/st_com/zh/stm32cubemx.html 破解:免费使用 mac电脑在安装的时候会出现上面的界面,依次安装即可。 (3)macOS…

2024-2025-1 20241314 《计算机基础与程序设计》第七周学习总结

2024-2025-1 20241314 《计算机基础与程序设计》第七周学习总结 作业信息这个作业属于哪个课程 <班级的链接>2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第七周作业这个作业的目标 数组与链表 基于数组和基于链表实现数据结构…

二进制和格雷码转换

二进制和格雷码转换 二进制转为格雷码//根据二进制转换成格雷码的法则,可以得到以下的代码: static unsigned int DecimaltoGray(unsigned int x) {return x^(x>>1); }//以上代码实现了unsigned int型数据到格雷码的转换,最高可转换32位自然二进制码,超出32位将溢出。…

在鸿蒙NEXT中开发一个2048小游戏

本项目是基于api12开发的2048游戏,游戏的逻辑是当用户向某个方向滑动时,将该方向相邻且相等的数字相加,同时在空白区域的随机位置生成一个随机数字。游戏中的数字越大,分数越高。首先,游戏的界面布局分别采用两个网格组件Grid来实现,难点在于上方的菜单栏是不均等的三种尺…

nginx 整体架构

Nginx 是什么 Nginx 是一款 C 语言编写高性能 Web 服务器,反向代理服务器。占用内存少、并发能力强 使用场景 nginx主要有以下 4 个使用场景作为 Http 服务器,可以提供静态网页和静态资源的访问 HTTP代理缓存,缓存服务端请求数据 作为反向代理服务器,将请求代理转发 作为负…

[CISCN2019 华北赛区 Day2 Web1]Hack World 1

[CISCN2019 华北赛区 Day2 Web1]Hack World 1 打开实例发现是个POST注入框盲猜SQL注入,万能密码检测无果,而且经过测试存在大量sql关键字过滤尝试使用(),出现了bool(false),确定这是一道布尔注入题and被禁用,决定采用异或^注入 构建payload脚本梭哈:成功获得flag:flag{a2…