一只蒟蒻,第一次写题解,有错误还望指正!

[NOIP2010 普及组] 三国游戏 题目https://www.luogu.com.cn/problem/P1199

题意理解

废话不多说,我们先看题目。有N个武将(N为偶数且N>4),每一对武将有一个不重复的默契值。网瘾少年小涵与计算机对战,小涵先手,计算器会尽己所能不让小涵拿到小涵目前可以组出的最大默契值。求小涵是否能胜,以及获胜情况下能够拿到最大的默契值。

提取关键信息

  • N>4且N为偶数
  • 每一对武将的默契值不重复
  • 计算机会一直拆小涵能选的最大默契值

思路分析

接下来我们分析一下思路。

  1. N>4,意味着小涵与机器人都至少能够选到3个武将;
  2. 默契值不重复,意味着不会出现平局;
  3. 而计算机的策略,则意味着小涵每一轮能够得到的最大默契值其实是当前状态下他能够选到的次大默契值

        根据 3 可以得出,当小涵选出一个武将时,该武将所能收获的最大默契值双方都不可能得到,因此,只要确保每个剩余武将的次大默契值小于小涵第一次所选的武将的次大默契值,那么小涵便是必胜的。因此如果小涵第一次选择所有武将中次大默契值最大的武将,并在前三轮选择中把次大默契值拿下,便可以必胜。

进一步说,所有武将中最大的次大默契值,就是答案。这里提供一下简单的证明。

证明

1:小涵必胜

当小涵选择次大默契值最大的武将时,计算机会拆掉该武将所对应的最大默契值。因为我们选择的是次大默契值最大的武士,所以该武士所对应的最大默契值同时也是最大默契值对应武士的最大默契值。因此在我们选择次大默契值后,计算机在一步之内无论如何都不可能超过我们所选的默契值。

那么,一步之外呢?

一步之外的威胁来自于其他武将的最大默契值。因为我们选的是次大默契值最大,所以可能有武将的最大默契值大于我们的次大默契值。但是,通过上述证明可得,剩下的最大默契值一定不在已选的三武将之内。所以,计算机如果想要得到那个最大默契值,一定需要再选两个武将。那么,这样的话……我们就可以以彼之道还施彼身——使用与计算机相同的策略一直拆掉计算机的最大值就可以确保我们的默契值是最大的了。哈哈哈没想到计算机你还有今天!

2:最大的次大默契值就是答案

根据之前的证明,我们所能拿到的一定是目前所有可选默契值中次大的默契值,那最大的次大默契值就是我们能拿到的最大的默契值了。

证毕。

AC代码

#include<iostream>
#include<cstdio>
using namespace std;
int a[510][510];
int main()
{int n,ans=0,max1=0,max2=0;cin>>n;for(int i=1;i<=n;++i){for(int j=i+1;j<=n;++j){scanf("%d",&a[i][j]);a[j][i]=a[i][j];    //数据是一个三角形,我们将它手动转换为矩阵}}for(int i=1;i<=n;++i){max1=0,max2=0;for(int j=1;j<=n;++j){if(a[j][i]>max1){max2=max1;max1=a[j][i];}else if(a[j][i]>max2){max2=a[j][i];}}ans=max(ans,max2);}    //手动找最大的次大默契值,可用for+sort替换。printf("1\n%d\n",ans);return 0;
}

[NOIP2010 普及组] 三国游戏 题解相关推荐

  1. P1199(NOIP2010 普及组)三国游戏 题解

    P1199(NOIP2010 普及组)三国游戏题解 Step-1 输入(重点) 输入n:int n;cin>>n; 输入数组: int a[1001][1001]; for(int i=1 ...

  2. P1199 [NOIP2010 普及组] 三国游戏-博弈论+贪心

    [NOIP2010 普及组] 三国游戏 题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N N N ...

  3. 洛谷 P1070 [NOIP2009 普及组] 道路游戏 题解

    题目描述 小新正在玩一个简单的电脑游戏. 游戏中有一条环形马路,马路上有 �n 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接.小新以某个机器人工厂为起点,按顺时针顺序依次将这 �n 个机器人工 ...

  4. NOIP 2010 普及组 三国游戏

    暴力搜索 #include <bits/stdc++.h> using namespace std;const int N = 510; int n, w[N][N]; //武将的默契值 ...

  5. 信息学奥赛一本通 1233:接水问题 | 1950:【10NOIP普及组】接水问题 | OpenJudge NOI 1.9 15 | 洛谷 P1190 [NOIP2010 普及组] 接水问题

    [题目链接] ybt 1233:接水问题 ybt 1950:[10NOIP普及组]接水问题 OpenJudge NOI 1.9 15:接水问题 洛谷 P1190 [NOIP2010 普及组] 接水问题 ...

  6. 信息学奥赛一本通 1970:【15NOIP普及组】扫雷游戏 | OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 | 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏

    [题目链接] ybt 1970:[15NOIP普及组]扫雷游戏 OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏 [题目考点] 1 ...

  7. 洛谷——P1179 [NOIP2010 普及组] 数字统计

    P1179 [NOIP2010 普及组] 数字统计 题目描述 请统计某个给定范围[L, R][L,R]的所有整数中,数字 22 出现的次数. 比如给定范围[2, 22][2,22],数字22 在数 2 ...

  8. P1010 [NOIP1998 普及组] 幂次方 题解

    P1010 [NOIP1998 普及组] 幂次方 题解 题目描述 任何一个正整数都可以用 2 的幂次方表示.例如 137 = 2 7 + 2 3 + 2 0 . 137=2^7+2^3+2^0. 13 ...

  9. [NOIP 2013提高组]转圈游戏 题解

    这题在洛谷上是道黄题,即[普及/提高-] 所以虽然是提高组的,但是其实挺简单的. 我们来看下题面: [NOIP 2013]转圈游戏 刚看到题面作为一个蒟蒻感觉它都不配做黄题,但是直到我看清楚了后发现它 ...

最新文章

  1. B1091 N-自守数 (15分)
  2. oem718d 基准站设置_RTK基站设置、7参数、测点、放线等操作教程,文末有视频
  3. 三种实现分布式解决方案原理分析
  4. 封装一个ViewPager真正的实现图片无限循环滚动带导航点
  5. (原创)c#学习笔记06--函数02--变量的作用域01--其他结构中变量的作用域
  6. 职高学计算机走单招是,职高学生不用愁了,还有机会上本科,走“单招”或是最佳途径!...
  7. 海报样机模型帮助以专业的方式展示你的设计
  8. solidity之call相关函数
  9. 从技术角度分析“抢票软件的加速”,到底有多快?
  10. G-Sensor 校准标准
  11. 游戏筑基开发之menset底层实现及C语言项目常见问题解决方案(C语言)
  12. 一个简单的堆栈,逻辑很清晰
  13. From Nand to Tetris Week1 超详细2021
  14. R语言之读取Excel及csv数据
  15. 关于将EXCEL文件导入到MYSQL数据库的一些方法
  16. 2022Q3消费级AR眼镜市场季度分析:国产品牌纷纷发力,市场全面启航
  17. Kurento 第一坑
  18. wechat4j开发-菜单创建
  19. 自定义datastage阶段
  20. 【引言集】 孔子:论语为政

热门文章

  1. LT8911EXB MIPI DSI CSI转EDP
  2. Hadoop中Namenode单点故障的解决方案
  3. 简易的学生社团管理(大二课设)
  4. 3D人体姿态估评估指标
  5. 解决网页无法选中文字,无法复制的问题
  6. 《状态变量分析导论》学习总结
  7. 算法模型---树相关---决策树
  8. [高数][高昆轮][高等数学上][第一章-函数与极限]07.无穷小的比较
  9. 计算机科学和物理哪个难,据说这是期末考试难度最大的15个专业,你上榜了吗?...
  10. 求解n个二进制数之间的最小码距