题目传送

显然,在这样的数据范围下搜索是没希望的了。好好分析一下,发现小涵时不可能拿到与一个武将最默契的另一个武将了。所以考虑一下默契值次大的一对武将。

显然,对每一个武将来说,小涵是可以拿到默契值次大的武将。如果小涵拿到所有默契值次大的武将组合中最大的那个组合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 三国游戏——题解的更多相关文章

  1. 【贪心】洛谷 P1199 三国游戏 题解

     这个题尽管题目长,主要还是证明贪心的正确性(与博弈关系不大) 题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战 ...

  2. 洛谷 P1199 三国游戏 题解

    每日一题 day18 打卡 Analysis 贪心 假如小A先选最大的[5,4],虽然电脑必须选一个破坏, 我们可以理解为5和4都属于小A的,假如后面未被破坏的最大值无论是和5相关还是和4相关,必然还 ...

  3. 洛谷 P1199 三国游戏 解题报告

    P1199 三国游戏 题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有\(N\)位武将(\(N\)为 ...

  4. 洛谷P1199 三国游戏

    题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不小于 4),任意两个武将之 ...

  5. 洛谷 P1199 三国游戏

    参考:Solution_ID:17 题解 更新时间: 2016-11-13 21:01 这道题要求最后得到的两方的默契值最大的武将,小涵的默契值大于计算机,首先,我们这个解法获胜的思路是,每个武将对应 ...

  6. 洛谷P1199三国游戏

    题目 博弈论+贪心. 由于我们是先手,所以我们其实是必赢的,而且其实选完前两次,就已经结束了,因为接下来选的每一次其实都没有我们前几次选的好.而且又因为机器人会把我们想选的最好的拿走,那我们就只能拿走 ...

  7. 洛谷P1999三国游戏

    题目:https://www.luogu.org/problemnew/show/P1199 仔细想想,两方都拿不到每个武将的配对中最大的: 本来想的是如果有武将a,b,对应最大ma,mb,次大ca, ...

  8. 洛谷P1057传球游戏题解

    题目 这个题表面上看并不像DP,但是当我们看到方案数时,我们可能会想到什么??? 对,分类加法原理,在每一轮中,每一个点的方案数都要加上这个点左边的方案与右边的方案. 因此我们可以枚举,设一个DP数组 ...

  9. 洛谷P2670扫雷游戏题解

    题目 这道题是一个简单的模拟搜索题,可以把每个雷的位置都记作1. 这样就可记录出数字啦 #include<iostream> #include<cstring> using n ...

随机推荐

  1. HDU4372(第一类斯特林数)

    题意:N座高楼,高度均不同且为1~N中的数,从前向后看能看到F个,从后向前看能看到B个,问有多少种可能的排列数. 0 < N, F, B <= 2000 首先我们知道一个结论:n的环排列的 ...

  2. 【Qt开发】Qt5.7中文显示乱码解决方法两种

    升级到Qt5.X之后,原先解决的Qt显示中文乱码的方法突然不适用了,找了很多方式来解决这个问题 第一种: 在公司代码里看到的方法,先将对应的cpp文件用windows自带的记事本打开,另存为UTF-8 ...

  3. 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容

    [Qt开发][VS开发][Linux开发]OpenCV.Qt-MinGw.Qt-msvc.VS2010.VS2015.Ubuntu Linux.ARM Linux中几个特别容易混淆的内容 标签:[Qt ...

  4. Oracle 高版本往低版本备份恢复的方法

    1. 高版本的数据库备份恢复到低版本的数据库 有时候回报错, 提示version版本不一致, 2. 其实方法是expdp 导出的时候 增加一个参数就可以了 参数 一般的类型是 version=11.2 ...

  5. es6 js数组常用方法

    一:会改变自身的方法 1.array.push(element1, ...elementN) 添加一个或多个元素到数组的末尾,并返回数组新的长度 2.array.unshift(element1, . ...

  6. C++ static、const和static const类型成员变量声明以及初始化

    C++ static.const和static const 以及它们的初始化 const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间. sta ...

  7. 【Python】循环结构中的else

    else在循环结构中,只有循环正常结束后才执行else,如果使用break跳出了循环,不会执行else for i in range(0,10): print(i)else: print(" ...

  8. Paper Reading_Database

    最近(以及预感接下来的一年)会读很多很多的paper......不如开个帖子记录一下读paper心得 AI+DB A. Pavlo et al., Self-Driving Database Engi ...

  9. 看完阮一峰的React教程后, 我写了一个TodoList

    看完阮一峰的React教程后,就自己做了这个TodoList,自己慢慢琢磨效率差了点但是作为入门小练习还是不错的. 以下是效果图:我的源码:todolistUI:bootstrap 4 一.组件化 我 ...

  10. android studio配置模拟器

    配置模拟器在Android开发中,肯定是要写好代码看结果的,如果使用as中自带的模拟器太low,启动速度又慢,网上有很多教程推荐使用genymotion模拟器的,可是如果是新手我建议选择更好入门的第三 ...