题解

12 条题解

  • 1
    @ 2021-02-25 12:31:38
    #include<bits/stdc++.h>
    using namespace std;
    int n,m,dis[10002],a[502][502],ans;
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            for(int j=i+1;j<=n;j++)
            {
                cin>>a[i][j];
                a[j][i]=a[i][j];
            }
        }
        for(int i=1;i<=n;i++)
        {
            sort(a[i]+1,a[i]+n+1);
            if(a[i][n-1]>ans)
            {
                ans=a[i][n-1];
            }
        }
        cout<<"1"<<endl<<ans<<endl;
       return 0;
    }
    
  • 1
    @ 2016-07-03 10:14:38

    var n,i,j,k,max,final:longint; m:array[0..500] of longint; a:array[0..500,0..500] of longint;

    begin
    readln(n);
    for i:=1 to n do
    for j:=i+1 to n do
    begin
    read(a[i,j]);
    a[j,i]:=a[i,j];
    end;

    for k:=1 to 2 do
    for i:=1 to n do begin max:=1;
    for j:=1 to n do
    if a[i,j]>a[i,max] then max:=j;
    if k=1 then a[i,max]:=0
    else m[i]:=a[i,max] end;

    final:=m[1];
    for i:=2 to n do if final<m[i] then final:=m[i];
    writeln('1');
    writeln(final);
    end.

  • 0
    @ 2016-08-24 10:27:07

    在所有次大值中找最大值
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<cstring>
    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    long long n,mo[501][501],sum,maxi[501],maxi2[501],maxii2[501],maxi3[501],han[4],robot[4];
    bool b[501]={0};
    int main()
    {
    freopen("sanguo.in","r",stdin);
    freopen("sanguo.out","w",stdout);

    cin>>n;
    for(int i=1;i<=n-1;i++)
    {
    for(int j=i+1;j<=n;j++)
    {
    cin>>sum;
    mo[i][j]=mo[j][i]=sum;
    }
    }
    for(int i=1;i<=n;i++)
    {
    long long maxii=-1;
    for(int j=1;j<=n;j++)
    {
    if(i!=j && mo[i][j]>maxii)
    {
    maxii=mo[i][j];
    maxi[i]=mo[i][j];
    maxii2[i]=j;
    }
    }
    }
    for(int i=1;i<=n;i++)
    {
    long long maxii=-1;
    for(int j=1;j<=n;j++)
    {
    if(i!=j && mo[i][j]>maxii && maxi[i]!=mo[i][j])
    {
    maxii=mo[i][j];
    maxi2[i]=mo[i][j];
    maxi3[i]=j;
    }
    }
    }
    long long maxii=-1,maxiii,maxiij;
    for(int i=1;i<=n;i++)if(maxi2[i]>maxii)
    {
    maxii=maxi2[i];
    }
    cout<<"1"<<endl;
    cout<<maxii<<endl;

    fclose(stdin);fclose(stdout);
    }

  • 0
    @ 2016-08-08 18:17:41

    在所有次大值中找最大值

  • 0
    @ 2015-12-21 17:19:45

    找出每组武将中默契值除最大值以外第二大的值,太水了。。。。。。
    #include<iostream>
    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int n,a[1000][1000],ans,maxx;

    int main()
    {
    //freopen("p.in","r",stdin);
    //freopen("p.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n-1;i++)
    {
    for(int j=i;j<=n;j++)
    {
    if(i==j)
    continue;
    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++)
    {
    if(a[i][j]>a[i][maxx])
    maxx=j;
    }
    a[i][maxx]=0;
    for(int j=1;j<=n;j++)
    {
    ans=max(ans,a[i][j]);
    }
    maxx=0;
    }
    printf("1\n%d",ans);
    return 0;
    }

  • 0
    @ 2015-06-24 16:19:12

    当小涵选了第一个武将后,机器必将拿走与之配对的最大默契武将,于是小涵只能拿走与之配对的次大默契武将。如果次大默契武将与其他武将存在更高的默契,机器也会拿走。所以无论如何,小涵只能拿到一个武将与之配对的次大默契武将。找到每位武将配对的次大默契武将,输出每位武将次大配对默契值中最大的一个即可。人有必赢策略,不用考虑输出0的情况。

    #include<stdio.h>
    int main( )
    {

    int s[501][501];
    int i,j,n,max1=0,max2=0,maxans=0;

    for(i=0;i<=500;i++)
    for(j=0;j<=500;j++)
    s[i][j]=0;

    scanf("%d",&n);

    for(i=1;i<=n-1;i++)
    for(j=i+1;j<=n;j++)
    {
    scanf("%d",&s[i][j]);
    s[j][i]=s[i][j];
    }

    for(i=1;i<=n;i++)
    {
    max1=0;max2=0;

    for(j=1;j<=n;j++)
    {
    if(s[i][j]>max1) {max2=max1;max1=s[i][j];}
    else if(s[i][j]>max2) max2=s[i][j];
    }

    if(max2>maxans) maxans=max2;
    }

    printf("1\n");
    printf("%d",maxans);

    return 0;
    }

  • 0
    @ 2015-03-29 12:01:36

    #include<iostream>
    #include<math.h>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<time.h>
    #include<stdlib.h>
    using namespace std;

    int a[505][505];
    int size;

    int main(){
    freopen("in.txt", "r", stdin);

    int i, j;
    cin >> size;
    for (i = 0; i < size; i++){
    for (j = i+1; j < size; j++){
    cin >> a[i][j];
    a[j][i] = a[i][j];
    }
    }

    int ans = 0;
    for (i = 0; i < size; i++){
    int one=0,two=0;
    for (j =0; j < size; j++){

    int*k;
    if (one>two)k = &two;
    else k = &one;
    if (a[i][j]>*k){
    *k = a[i][j];
    }
    }
    ans = max(min(one, two),ans);
    }
    cout << 1 << endl << ans << endl;
    return 0;
    }

  • 0
    @ 2014-10-08 21:04:44

    #include <iostream>
    using namespace std;
    int n,x[501][501],cigao[501];
    int main()
    {
    cin >> n;
    for (int i=1;i<=n;i++)
    for (int j=i+1;j<=n;j++)
    {
    cin >> x[i][j];
    x[j][i]=x[i][j];
    }
    for (int i=1;i<=n;i++)
    {
    int max=1;
    for (int j=2;j<=n;j++)
    if(x[i][j]>x[i][max]) max=j;
    x[i][max]=0;
    for (int j=2;j<=n;j++)
    if(x[i][j]>max) max=x[i][j];
    cigao[i]=max;
    }
    int max=0;
    for (int i=1;i<=n;i++)
    if(cigao[i]>max) max=cigao[i];
    cout<<1<<endl<<max<<endl;
    //system("pause");
    return 0;
    }

  • 0
    @ 2014-05-04 18:13:56

    program a01;
    var
    n,j,i:longint;
    max,max2:qword;
    a:array[0..501,0..501] of qword;
    begin
    read(n);
    for i := 1 to n do
    begin
    max:=0;
    max2:=0;
    for j := 1 to n do
    begin
    if j>i then
    begin
    read(a[i,j]);
    a[j,i]:=a[i,j];
    end;
    if max<a[i,j] then
    begin
    max2:=j;
    max:=a[i,j];
    end;
    end;
    a[i,max2]:=0;
    for j := 1 to n do
    if a[i,0]<a[i,j] then a[i,0]:=a[i,j];
    end;
    max:=0;
    for i := 1 to n do
    if a[i,0]>max then max:=a[i,0];
    writeln(1);
    writeln(max);
    end.

  • 0
    @ 2014-05-04 18:13:50

    program a01;
    var
    n,j,i:longint;
    max,max2:qword;
    a:array[0..501,0..501] of qword;
    begin
    read(n);
    for i := 1 to n do
    begin
    max:=0;
    max2:=0;
    for j := 1 to n do
    begin
    if j>i then
    begin
    read(a[i,j]);
    a[j,i]:=a[i,j];
    end;
    if max<a[i,j] then
    begin
    max2:=j;
    max:=a[i,j];
    end;
    end;
    a[i,max2]:=0;
    for j := 1 to n do
    if a[i,0]<a[i,j] then a[i,0]:=a[i,j];
    end;
    max:=0;
    for i := 1 to n do
    if a[i,0]>max then max:=a[i,0];
    writeln(1);
    writeln(max);
    end.

  • 0
    @ 2013-11-30 20:32:19

    program a01;
    var
    n,j,i:longint;
    max,max2:qword;
    a:array[0..501,0..501] of qword;
    begin
    read(n);
    for i := 1 to n do
    begin
    max:=0;
    max2:=0;
    for j := 1 to n do
    begin
    if j>i then
    begin
    read(a[i,j]);
    a[j,i]:=a[i,j];
    end;
    if max<a[i,j] then
    begin
    max2:=j;
    max:=a[i,j];
    end;
    end;
    a[i,max2]:=0;
    for j := 1 to n do
    if a[i,0]<a[i,j] then a[i,0]:=a[i,j];
    end;
    max:=0;
    for i := 1 to n do
    if a[i,0]>max then max:=a[i,0];
    writeln(1);
    writeln(max);
    end.

    有必胜的策略所以根本不会输,不用在意输出0的情况……没有很好的优化不过ac了

  • 0
    @ 2013-10-02 15:07:51

    有必胜策略,玩家总能保证电脑取不到最大边,且玩家能取到的最优边一定是某个顶点的次大边

  • 1

信息

ID
1809
难度
3
分类
(无)
标签
递交数
835
已通过
427
通过率
51%
被复制
16
上传者