P1199 [NOIP2010 普及组] 三国游戏

https://www.luogu.com.cn/problem/P1199
贪心,博弈论
黄色题
思路:
小涵和电脑都拿不到每个武将的最大默契值,因为小涵每拿起最大组合的其中一个,另一个就被电脑拿走了,但是电脑也无法占有该组合的最大值,因为另一个在小涵手里,这个组合的最大值其实就作废了。但是小涵在第二次选将时可以拿到第一次选中的武将的次大默契值组合。在双方都拿不到最大默契值的情况下,显然谁拿到次大默契组合的最大值,谁就赢了。
博弈论重点分析两点:1.什么时候可以判定胜利者,2.先手的影响。
复制代码
#include<bits/stdc++.h> using namespace std; //放到 main 外面去定义可以得到的好处:数组 mo 的中所有元素都会被默认赋值为 0 int mo[501][501],n; int main() { cin>>n; // 构造二维数组要用嵌套的 fo r循环,i 写入到数组第一维,j 写到数组第二维 for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { cin>>mo[i][j]; //(i,j) 的对称位置是(j,i) mo[j][i]=mo[i][j]; } } //ans 保存二维数组每一行次大值中的最大值 int ans = 0; //对数组的第二维进行排序 for(int i=1;i<=n;i++) { //对 mo 的每一行都排序,sort 默认是从小到大的 sort(mo[i],mo[i]+n+1); //排序后每一行第二大的值是 mo[i][n-1] if(mo[i][n-1] > ans) ans = mo[i][n-1]; } cout<<1<<endl<<ans; return 0; }
复制代码

 


__EOF__

本文作者灰の魔女伊蕾娜
本文链接https://www.cnblogs.com/2elaina/p/16560836.html
关于博主:编程小萌新一名,希望从今天开始慢慢提高,一步步走向技术的高峰!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   -イレイナ  阅读(110)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示