当前位置: 首页 > news >正文

P1199 三国游戏【洛谷算法习题】

P1199 三国游戏

网特链接

P1199 三国游戏

题目描述

小涵很喜欢电脑游戏,这些天他正在玩一个叫做《三国》的游戏。

在游戏中,小涵和计算机各执一方,组建各自的军队进行对战。游戏中共有N NN位武将(N NN为偶数且不小于4 44),任意两个武将之间有一个“默契值”,表示若此两位武将作为一对组合作战时,该组合的威力有多大。游戏开始前,所有武将都是自由的(称为自由武将,一旦某个自由武将被选中作为某方军队的一员,那么他就不再是自由武将了),换句话说,所谓的自由武将不属于任何一方。

游戏开始,小涵和计算机要从自由武将中挑选武将组成自己的军队,规则如下:小涵先从自由武将中选出一个加入自己的军队,然后计算机也从自由武将中选出一个加入计算机方的军队。接下来一直按照“小涵→ \to计算机→ \to小涵→ … \to\dots”的顺序选择武将,直到所有的武将被双方均分完。然后,程序自动从双方军队中各挑出一对默契值最高的武将组合代表自己的军队进行二对二比武,拥有更高默契值的一对武将组合获胜,表示两军交战,拥有获胜武将组合的一方获胜。

已知计算机一方选择武将的原则是尽量破坏对手下一步将形成的最强组合,它采取的具体策略如下:任何时刻,轮到计算机挑选时,它会尝试将对手军队中的每个武将与当前每个自由武将进行一一配对,找出所有配对中默契值最高的那对武将组合,并将该组合中的自由武将选入自己的军队。 下面举例说明计算机的选将策略,例如,游戏中一共有6 66个武将,他们相互之间的默契值如下表所示:

武将编号123456
15 5528 282816 161629 292927 2727
25 5523 23233 3320 20201 11
328 282823 23238 8832 323226 2626
416 16163 338 8833 333311 1111
529 292920 202032 323233 333312 1212
627 27271 1126 262611 111112 1212

双方选将过程如下所示:

小涵轮到计算机时可选的自由武将计算机计算机选将说明
第一轮5 551 , 2 , 3 , 4 , 6 1,2,3,4,61,2,3,4,64 \color{magenta}44小涵手中的5 55号武将与4 44号的默契值最高,所以计算机选择4 44号。
第二轮5 , 3 5,35,31 , 2 , 6 1,2,61,2,64 , 1 4,\color{magenta}14,1小涵手中的5 55号和3 33号武将与自由武将中配对可产生的最大默契值为29 2929,是由5 55号与1 11号配对产生的,所以计算机选择1 11号。
第三轮5 , 3 , 6 5,3,65,3,62 224 , 1 , 2 4,1,\color{magenta}24,1,2

小涵想知道,如果计算机在一局游戏中始终坚持上面这个策略,那么自己有没有可能必胜?如果有,在所有可能的胜利结局中,自己那对用于比武的武将组合的默契值最大是多少?

假设整个游戏过程中,对战双方任何时候均能看到自由武将队中的武将和对方军队的武将。为了简化问题,保证对于不同的武将组合,其默契值均不相同。

输入格式

N NN行。

第一行为一个偶数N NN,表示武将的个数。

2 22行到第N NN行里,第i + 1 i+1i+1行有N − i N-iNi个非负整数,每两个数之间用一个空格隔开,表示i ii号武将和 $i+1,i+2,\dots,N $ 号武将之间的默契值(0 ≤ 默契值 ≤ 10 9 0 \le \text{默契值} \le 10^90默契值109)。

输出格式

共一或二行。

若对于给定的游戏输入,存在可以让小涵获胜的选将顺序,则输出 $ 1$,并另起一行输出所有获胜的情况中,小涵最终选出的武将组合的最大默契值。如果不存在可以让小涵获胜的选将顺序,则输出0 00

输入输出样例 #1

输入 #1

6 5 28 16 29 27 23 3 20 1 8 32 26 33 11 12

输出 #1

1 32

输入输出样例 #2

输入 #2

8 42 24 10 29 27 12 58 31 8 16 26 80 6 25 3 36 11 5 33 20 17 13 15 77 9 4 50 19

输出 #2

1 77

说明/提示

数据范围

对于 $ 40%$ 的数据有N ≤ 10 N≤10N10

对于 $ 70%$ 的数据有 $ N≤18$。

对于100 % 100\%100%的数据有4 ≤ N ≤ 500 4\le N≤5004N500。保证对于不同的武将组合,其默契值均不相同。

NOIP2010 普及组 第四题

解题思路

本题核心是博弈论结论推导,无需模拟复杂选将过程,直接通过规律求解最优解。根据游戏规则与计算机的破坏策略,可得出关键结论:小涵必定必胜;对于任意一个武将,其默契值最高的搭档一定会被计算机抢走,但第二高的搭档小涵一定能成功选中。因此,我们只需要遍历每一个武将,找到该武将所有默契值中的第二大值,再取所有武将第二大值中的最大值,即为小涵能获得的最优默契值。算法仅需排序与遍历,时间复杂度O ( N 2 log ⁡ N ) O(N^2\log N)O(N2logN),完美适配N ≤ 500 N≤500N500的数据规模。

总结

核心逻辑:利用博弈策略,计算机只能抢走每个武将的最优搭档,小涵保底能拿到次优搭档,取所有次优值的最大值。
关键操作:构建对称默契值矩阵、每行排序取第二大值、全局取最大值。
效率保障:结论式解法,无复杂模拟,简洁高效且100%正确。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vvt;typedefpair<ll,ll>pll;constll N=1e3+10;constll p=1e9+7;constll INF=1e18;constll M=1e6+10;intmain(){ios::sync_with_stdio(false);cin.tie(0);intn;cin>>n;vector<vector<int>>a(n+1,vector<int>(n+1));for(inti=1;i<n;++i)for(intj=i+1;j<=n;++j){cin>>a[i][j];a[j][i]=a[i][j];}intans=0;for(inti=1;i<=n;++i){sort(a[i].begin()+1,a[i].begin()+n+1);ans=max(ans,a[i][n-1]);}cout<<"1\n"<<ans<<'\n';return0;}
http://www.jsqmd.com/news/749541/

相关文章:

  • 嵌入式设备配置数据防丢指南:用Flash双区备份+CRC32打造可靠存储模块
  • 2026届必备的六大降重复率网站推荐榜单
  • 拆解Autosar SPI的‘黑盒’:用S32K146的LPSPI模块,理解MCAL的Job与Sequence设计哲学
  • 专业的试验台厂家哪家性价比高?湖南言一智能科技有限公司推荐 - mypinpai
  • 国密改造迫在眉睫!金融级Python系统迁移SM4加密的5步标准化实施手册(含等保2.0对照表)
  • 告别版本冲突!在Ubuntu 20.04上为ROS项目灵活切换OpenCV版本的完整实践
  • 参数服务器架构在LLM后训练中的优化实践
  • 告别任务管理器!用微软Process Explorer揪出电脑里的“流氓”软件(附实战排查技巧)
  • LLM与强化学习结合的智能评分系统RubiCap解析
  • BetterGI原神智能辅助:5分钟解放双手的自动化神器
  • MoE系统与AFD架构:原理、挑战与优化实践
  • DoL-Lyra终极指南:5分钟打造个性化游戏美化的完整教程
  • 手把手教你用Graph of Thoughts(GoT)优化LLM任务:从排序到文档合并的实战拆解
  • 视觉语言模型强化学习:PuzzleCraft课程训练实践
  • ChatGPT输出结构化JSON的提示词工程与解析工具实践
  • 别再折腾系统升级了!手把手教你用BalenaEtcher和现成镜像快速部署Jetson Nano Ubuntu 20.04 + ROS2环境
  • 视频检索中的长尾失效问题与RANKVIDEO解决方案
  • 百度网盘限速破解:5分钟掌握直链解析技术,告别龟速下载的终极指南
  • LLM在自动驾驶中的应用:OpenREAD系统解析
  • 别再手动复制粘贴了!用Python脚本5分钟自动同步飞书多维表数据到本地数据库
  • 告别Vivado SDK的HDF文件:手把手教你用Petalinux 2020.1和XSA文件定制Zynq Linux系统
  • 告别WebRTC VAD!用这个国产Python库(YeAudio)5分钟搞定长语音智能分割
  • 基于智能优化算法的伺服调速PID参数整定永磁同步电机【附代码】
  • 2026液槽高效送风口哪家最好用?行业精选推荐 - 品牌排行榜
  • 从“哑管道”到“智能对话”:深入理解GNU Radio中Message与Stream的协作哲学
  • E7Helper终极指南:3步快速配置第七史诗自动化脚本助手
  • DRV8301驱动板迭代手记:如何从原理图到PCB优化你的FOC项目硬件(附下一版修改清单)
  • 告别舵机抖动!用PCA9685和Arduino Uno搞定16路舵机控制(附完整代码)
  • Overleaf写中文报告?用IEEE双栏模板也能优雅排版,附字体自定义技巧
  • 从‘理想’到‘现实’:深入分析反馈网络加载效应如何影响你的运放电路精度(以电压-电压反馈为例)