洛谷P1199 三国游戏——题解
显然,在这样的数据范围下搜索是没希望的了。好好分析一下,发现小涵时不可能拿到与一个武将最默契的另一个武将了。所以考虑一下默契值次大的一对武将。
显然,对每一个武将来说,小涵是可以拿到默契值次大的武将。如果小涵拿到所有默契值次大的武将组合中最大的那个组合M会怎样?
考虑当小涵拿到所有默契值次大的武将组合后计算机的行动:计算机一定会去拿能跟小涵最后拿的武将组成目前最默契组合的自由武将。这个自由武将一定会与计算机第一次拿到的那个武将组成一个组合,这是人无法阻止的。考虑一下这个组合的默契值大小:如果这个组合N比小涵拿到 所有默契值次大的武将组合中最大的那个组合还要大,那么这个组合一定是某个武将能组成的最大组合。如果这个组合N比小涵拿到的第一个武将能组成的最默契的组合K还要大,显然所有默契值次大的武将组合中最大的那个组合就不是M了,与已知条件矛盾,故不成立;如果这个组合N比小涵拿到的第一个武将能组成的最默契的组合K还要大,显然N是比M更大的次大组合,与已知条件矛盾,故不成立。所以当小涵拿到所有默契值次大的武将组合中最大的那个组合M后,计算机下一步是拿不到比M更大的组合的。之后只要保证计算机拿不到最大的组合,小涵就一定会胜利。这样的话只要人按照计算机的策略拿将就行了。
见AC代码:
#include<iostream>
#include<cstdio>
#include<algorithm> using namespace std; int a[][]; inline bool cmp(int a,int b)
{
return a>b;
} int main()
{
int n;
cin>>n;
for(int i=;i<n;i++)
for(int j=i+;j<=n;j++)
{
cin>>a[i][j];
a[j][i]=a[i][j];
}
for(int i=;i<=n;i++)
sort(a[i]+,a[i]++n,cmp);
int ans=;
for(int i=;i<=n;i++) if(a[i][]>ans) ans=a[i][];
cout<<"1\n"<<ans;
return ;
}
洛谷P1199 三国游戏——题解的更多相关文章
- 【贪心】洛谷 P1199 三国游戏 题解
这个题尽管题目长,主要还是证明贪心的正确性(与博弈关系不大) 题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战 ...
- 洛谷 P1199 三国游戏 题解
每日一题 day18 打卡 Analysis 贪心 假如小A先选最大的[5,4],虽然电脑必须选一个破坏, 我们可以理解为5和4都属于小A的,假如后面未被破坏的最大值无论是和5相关还是和4相关,必然还 ...
- 洛谷 P1199 三国游戏 解题报告
P1199 三国游戏 题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有\(N\)位武将(\(N\)为 ...
- 洛谷P1199 三国游戏
题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不小于 4),任意两个武将之 ...
- 洛谷 P1199 三国游戏
参考:Solution_ID:17 题解 更新时间: 2016-11-13 21:01 这道题要求最后得到的两方的默契值最大的武将,小涵的默契值大于计算机,首先,我们这个解法获胜的思路是,每个武将对应 ...
- 洛谷P1199三国游戏
题目 博弈论+贪心. 由于我们是先手,所以我们其实是必赢的,而且其实选完前两次,就已经结束了,因为接下来选的每一次其实都没有我们前几次选的好.而且又因为机器人会把我们想选的最好的拿走,那我们就只能拿走 ...
- 洛谷P1999三国游戏
题目:https://www.luogu.org/problemnew/show/P1199 仔细想想,两方都拿不到每个武将的配对中最大的: 本来想的是如果有武将a,b,对应最大ma,mb,次大ca, ...
- 洛谷P1057传球游戏题解
题目 这个题表面上看并不像DP,但是当我们看到方案数时,我们可能会想到什么??? 对,分类加法原理,在每一轮中,每一个点的方案数都要加上这个点左边的方案与右边的方案. 因此我们可以枚举,设一个DP数组 ...
- 洛谷P2670扫雷游戏题解
题目 这道题是一个简单的模拟搜索题,可以把每个雷的位置都记作1. 这样就可记录出数字啦 #include<iostream> #include<cstring> using n ...
随机推荐
- 递归算法之排列组合-求一个集合S的m个元素的组合和所有可能的组合情况
求一个集合S的m个元素组合的所有情况,并打印出来,非常适合采用递归的思路进行求解.因为集合的公式,本身就是递归推导的: C(n,m) = C(n-1,m-1) + C(n-1,m). 根据该公式,每次 ...
- MSSQL注入--反弹注入
明明是sql注入的点,却无法进行注入,注射工具拆解的速度异常的缓慢,错误提示信息关闭,无法返回注入的结果,这个时候你便可以尝试使用反弹注入, 反弹注入需要依赖于函数opendatasource的支持, ...
- (已实践)PLSQL本地还原Oracle数据库dmp文件
这个方法很烂,导致重装Oracle时候处处出现问题,不建议使用这个方法,除非你以后不再用Oracle这个软件了,这个方法很烂,再评论一下. 第一,启动服务,(如果数据库处于启动状态,那么略过这一步) ...
- 如何学习MySQL数据库管理员(OCP)认证(转)
如何学习MySQL数据库管理员(OCP)认证 转自: 甲骨文专家中,MySQL 5.6数据库管理员( OCP )证明您的安装和优化MySQL服务器,设置复制和安全,执行数据库备份及性能优化和保护M ...
- 数据库系统原理之SQL(四)
数据库系统原理之SQL(四) 1. 数据更新 插入数据 INSERT-VALUES语句 #插入多条数据 insert [into] table_name (column_name,...) value ...
- 了不起的NodeJS命令行工具
一个命令行工具实例 这个实例包含了处理进程中的stdin和stdout相关的api,以及文件系统有关的api,使用回调和事件机制来实现并发,主要锻炼基于非阻塞事件的I/O编程中的流控制. // 声明模 ...
- dfs(最佳路径)
http://acm.hdu.edu.cn/showproblem.php?pid=1242 Rescue Time Limit: 2000/1000 MS (Java/Others) Memo ...
- Intellij IDEA奇巧妙计(不停更新)
1,在pom.xml文件中,Ctrl+Shift+Alt+U打开Manven依赖视图 2,Alt+7 查看类里面方法,变量等结构 3, Shift+Esc 收缩编译提示框 4, ctrl+r 替换本页 ...
- div的edit和drag(点击div可编辑、删除、拖动)
1.可编辑: <div id="move" contentEditable="true">可编辑</div> 设置contentEdit ...
- [七月挑选]frp初使用
title: frp初使用 先starfatedier/frp,再开工. 什么是frp? frp is a fast reverse proxy to help you expose a local ...