洛谷 P1199 三国游戏
这道题要求最后得到的两方的默契值最大的武将,
小涵的默契值大于计算机,
首先,我们这个解法获胜的思路是,每个武将对应的所有配对值中最大的值,已经被拆散
在这种情况下,场上存在的只剩所有的“次大值”,就是我们拿来排序的那一堆
这时候小涵拿到了“次大值”中的最大值,肯定是场上最高的分数
策略就是:
先考虑最开始的情况:
1.从武将中找出武将i,记下与i的默契值第二大的武将j,使得i与j的默契值最大
2.小涵选出i,那么计算机只会选出与i默契值最大的武将p
此时与p的默契值最大值一定是i。为什么呢?
假设与p的默契值最大值是k,次大值是k2,第某大的值是i
那么p-k > p-k2 > p-i
这里的'-'是对应的意思
而i-p > i-j
所以p-k2 > i-j
也就是与p默契值第二大的值大于与i默契值第二大的值
显然小涵开始时应该改选p,矛盾。
因此,我们第一次选了i,取得了次大值中的最大值,同时拆掉了i的最大值和p的最大值
3.小涵选出l(i的默契值次大值),计算机选m,m是:i,或,l除了与i外,的最大值
可能有两种原因:一是l-m是l除了与i外的最大值,拆了最大值正合我意
二是i-m比l除了与i外的最大值更大(但是不会比i-l大,
因为i的最大值已经拆掉了,次大值就是i-l),即i-l > i-m > (l除了与i外的最大值)
这时候l的最大值拆不拆都是无所谓的,反正小于我们的i-l
然后小涵选了n拆了m的最大值m-n
计算机接着拆最大值,要么是n的最大值,要么比i-l小,证法同上
两个人就这么拆最大值,就把最大值拆完了,剩下的就是次大值,我们的i-l就是次大值中最大的
所以还是不要想着证明了,编程拿搜索对拍验证吧,
找了几十个证明也没看到严谨的,实在是难想。。。
#include<cstdio>
#include<algorithm>
int n;
int a[][];
int main()
{
int i,j,maxans=-;
scanf("%d",&n);
for(i=;i<n;i++)
{
a[i][i]=-;
for(j=i+;j<=n;j++)
{
scanf("%d",&a[i][j]);
a[j][i]=a[i][j];
}
}
a[n][n]=-;
for(i=;i<=n;i++)
std::sort(a[i]+,a[i]+n+);
for(i=;i<=n;i++)
if(a[i][n-]>maxans)
maxans=a[i][n-];
printf("1\n%d\n",maxans);
return ;
}
洛谷 P1199 三国游戏的更多相关文章
- 洛谷 P1199 三国游戏 解题报告
P1199 三国游戏 题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有\(N\)位武将(\(N\)为 ...
- 洛谷P1199 三国游戏
题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不小于 4),任意两个武将之 ...
- 【贪心】洛谷 P1199 三国游戏 题解
这个题尽管题目长,主要还是证明贪心的正确性(与博弈关系不大) 题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战 ...
- 洛谷 P1199 三国游戏 题解
每日一题 day18 打卡 Analysis 贪心 假如小A先选最大的[5,4],虽然电脑必须选一个破坏, 我们可以理解为5和4都属于小A的,假如后面未被破坏的最大值无论是和5相关还是和4相关,必然还 ...
- 洛谷P1199三国游戏
题目 博弈论+贪心. 由于我们是先手,所以我们其实是必赢的,而且其实选完前两次,就已经结束了,因为接下来选的每一次其实都没有我们前几次选的好.而且又因为机器人会把我们想选的最好的拿走,那我们就只能拿走 ...
- 洛谷P1199 三国游戏——题解
题目传送 显然,在这样的数据范围下搜索是没希望的了.好好分析一下,发现小涵时不可能拿到与一个武将最默契的另一个武将了.所以考虑一下默契值次大的一对武将. 显然,对每一个武将来说,小涵是可以拿到默契值次 ...
- 洛谷P1999三国游戏
题目:https://www.luogu.org/problemnew/show/P1199 仔细想想,两方都拿不到每个武将的配对中最大的: 本来想的是如果有武将a,b,对应最大ma,mb,次大ca, ...
- 洛谷 P2197 nim游戏
洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...
- 洛谷 P1965 转圈游戏
洛谷 P1965 转圈游戏 传送门 思路 每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,--,依此类推,第n − m号位置上的小伙伴走到第 0 号 ...
随机推荐
- Mac中Maven的安装步骤
1.下载Maven,并解压到某个目录. 2.打开terminal,输入一下命令. open .bash_profile; 3.在bash_profile中,编辑文件 内容如下. 4.保存bash_p ...
- Mac开发必备工具(一)—— Homebrew
Homebrew 简介 macOS 缺失的软件包管理器.使用 Homebrew 安装 Apple 没有预装但 你需要的东西.官网有中文说明. 安装与配置 Homebrew 的安装非常简单,将下面这条命 ...
- RedisCluster集群原理
主从复制,数据值每个服务器都存了. 针对redis集群的解决方案, 连接这个集群,不用在乎Master了 6台redis 1.why use Redis? 减轻数据库访问压力 2.持久化 RDB(间隔 ...
- MySQL的IFNULL简单使用说明
MySQL IFNULL函数简介 MySQL IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数. 否则,IFNULL函数返回第二个参数. 两个参数可以是文 ...
- CentOS7 安装和配置Tomcat
1.官网下载Tomcat的压缩包 https://tomcat.apache.org/download-70.cgi 2.使用Xftp5把下载的压缩包上传到 /usr/soft (soft文件夹自己新 ...
- 用JS或jQuery访问页面内的iframe
用JS或jQuery访问页面内的iframe,兼容IE/FF 注意:框架内的页面是不能跨域的!假设有两个页面,在相同域下.index.html 文件内含有一个iframe: <!DOCTYPE ...
- I.MX6 u-boot 2009 lvds hdmi lcd 补丁
/************************************************************************* * I.MX6 u-boot 2009 lvds ...
- MP4V2库与MP4AV库编译
最近在开发一个将RTP流存储为MP4文件的功能.其中针对MP4文件读写,用到了两个开源的库.其中MP4V2用于数据的读写,MP4AV用于对其中的数据帧进行分析. MP4V2和MP4AV都是开源项目MP ...
- Centos7 编译安装 Nginx、MariaDB、PHP
前言 本文主要大致介绍CentOS 7下编译安装Nginx.MariaDB.PHP.面向有Linux基础且爱好钻研的朋友.技艺不精,疏漏再所难免,还望指正. 环境简介: 系统: CentOS 7,最小 ...
- TRACE 学习
TRACE 宏有点象我们以前在C语言中用的Printf函数,使程序在运行过程中输出一些调试信息,使我们能了解程序的一些状态.在Output中可以查看到结果. 但有一点不同的是:TRACE 宏只 ...