【NOIP】普及组2010 三国游戏

【算法】贪心

【题解】如果看重一对,先选择其中一个点,该点相邻最大的肯定被选走。所以答案就是最大的[所有点的次大连边点]啦。

#include
#include
#include
#include
#include
using namespace std;
const int maxn=510;
int a[maxn][maxn],n,max1,max2,ans;
int main()
{
//    freopen("sanguo.in","r",stdin);
//    freopen("sanguo.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
     {
         for(int j=i+1;j<=n;j++)
          scanf("%d",&a[i][j]),a[j][i]=a[i][j];
     }
/*    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)printf("%d ",a[i][j]);
        printf("\n");
    }*/
    ans=0;
    for(int i=1;i<=n;i++)
     {
         max1=0;max2=0;
         for(int j=1;j<=n;j++)
         if(a[i][j]>max1)max2=max1,max1=a[i][j];
          else if(a[i][j]>max2)max2=a[i][j];
//        printf("i=%d max=%d max2=%d\n",i,max1,max2);
        if(max2>ans)ans=max2;
     }
    printf("1\n%d",ans);
    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/onioncyc/p/5766615.html

你可能感兴趣的:(【NOIP】普及组2010 三国游戏)