洛谷:P1199 三国游戏(数学,普及/提高- )

题目:

在这里插入图片描述

分析:还是看答案提示才有思路

结论:每一行中次大中的最大。
提问:每一行最大的可能取到吗?
回答:一定那个不可能,而且我可以控制电脑也不可能取到,除非我傻了。
提问:每一行中次大中的最大那个我一定可以取到吗?
回答:可以,先取这一行就可以啦!(你不让我取这行次大的,

其实第一个问题不准确,某个可能是改行最大其他行第二大也是可以的

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
 int num;
 cin>>num;
 int A[num][num];
 memset(A,-1,sizeof(A));
 for(int i=0;i<num-1;i++)
 {
  for(int j=0;j<num-i-1;j++)
  {
   int t;
   cin>>t;
   A[i][i+1+j]=t;
   A[i+1+j][i]=t;
  }
 }
 int maxx=-1;
 for(int i=0;i<num;i++)
 {
  int max1=max(A[i][0],A[i][1]),max2=min(A[i][0],A[i][1]); 
  for(int j=2;j<num;j++)
  {
   if(A[i][j]>max1)
   {
    max2=max1;
    max1=A[i][j];
   }
   else if(A[i][j]>max2) max2=A[i][j];
  }
  maxx=max(maxx,max2);
 }
 cout<<1<<endl<<maxx;
 }

分情况说明一下吧:

1.次大的最大的那个,和 所有中最大的在一行:

对手当然阻止你选最大的,然后因为阻挡你,所选择的那一行,只能有次大的了,但是你选择的是次大最大。之后阻止他选每行最大的就行啦。
在这里插入图片描述

2.次大的最大的那个,和 所有中最大的不在一行:

也很容易分析,自己想吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值