cdcq

梦幻小鱼干

导航

【NOIP普及2010】三国游戏

原题:

 

 

 

首先可以发现一个性质

每一行(或一列,实际上行和列是相同的)最大数必拿不到

因为稽器人针对你,你也可以针对稽器人

其次可以发现一个性质

每一行次大数必能拿到

你先拿走i,然后稽器人拿走第i行最大数,然后你就能拿到第i行次大了

最后可以发现一个性质

既然每一行的最大数没人拿得到,而次大数你又必能拿到

那直接挑一个最大的次大数就vans了

 

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int n,a[510][510];
 5 int main(){
 6     cin>>n;
 7     for(int i=1;i<=n;++i)for(int j=1;j+i<=n;++j){
 8         scanf("%d",&a[i][j+i]);
 9         a[j+i][i]=a[i][j+i];
10     }
11     int ans=0;
12     for(int i=1;i<=n;++i){
13         int mx1=0,mx2=0;
14         for(int j=1;j<=n;++j){
15             if(a[i][j]>mx1)  mx2=mx1,mx1=a[i][j];
16             else if(a[i][j]>mx2)  mx2=a[i][j];
17         }
18         ans=max(ans,mx2);
19     }
20     cout<<1<<endl<<ans<<endl;
21     return 0;
22 }
View Code

 

posted on 2020-03-04 16:10  cdcq  阅读(283)  评论(0编辑  收藏  举报