P1199三国游戏(博弈论)

一堆武将,两两之间有个默契值,你先选然后机器选和你匹配的默契值最大的武将,意思就是不让你选最大的,这个时候一顿分析,(你拿了默契值最大的一个,另一个肯定被机器拿了,所以谁都拿不到最大的,机器拿完又是你选的了,这时你就可以选和你手上的这个匹配的默契值最大的),所以人是必胜的,最大的肯定是第二大的之中最大的

 

意思就是28,23,28,16,32,26(每一行的第二大)之中最大的,直接做出这样一个表,然后找答案就好了

复制代码
 1 #include<climits>
 2 #include<iostream>
 3 using namespace std;
 4 const int N=550;
 5 int mp[N][N];
 6 int n;
 7 const int inf=INT_MAX;
 8 int main()
 9 {
10     cin>>n;
11     for(int i=1;i<=n-1;i++)
12     {
13         for(int j=i+1;j<=n;j++)
14         {
15             cin>>mp[i][j];
16             mp[j][i]=mp[i][j];
17         }
18     }
19     for(int i=1;i<=n;i++)
20     {
21         mp[i][i]=-inf;
22     }//以上都是初始化
23     int ans=-inf;
24     for(int i=1;i<=n;i++)//循环每一行
25     {
26         int first=-inf,second=-inf;//从每一行找出第一大的,和第二大的
27         for(int j=1;j<=n;j++)
28         {
29             if(mp[i][j]>first)
30             {
31                 second=first;
32                 first=mp[i][j];
33             }
34             else if(mp[i][j]>second)
35             {
36                 second=mp[i][j];
37             }
38         }
39         ans=max(ans,second);//更新ans
40     }
41     cout<<1<<endl;//因为人必胜,输出1
42     cout<<ans;
43     return 0;
44 }
复制代码
posted on   greenofyu  阅读(169)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示