社区讨论

WA#4 75pts

P7043「MCOI-03」村国参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lury1k05
此快照首次捕获于
2024/04/09 13:31
2 年前
此快照最后确认于
2024/04/09 18:25
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int T;
int n,u,v,a[2000005],mx,li,my,lj;
long long m;
int main(){
    cin>>T;
    while(T--){
        cin>>n>>m;
        memset(a,0,sizeof(a));
        mx=my=li=lj=0;
        for(int i=1;i<=n;i++){
            scanf("%d",a+i);
            if(a[i]>mx){
                mx=a[i];
                li=i;
            }
        }
        for(int i=1;i<n;i++){
            scanf("%d%d",&u,&v);
            if(u==li)
                if(a[v]>my){
                    my=a[u];
                    lj=v;
                }
            if(v==li)
                if(a[u]>my){
                    my=a[u];
                    lj=u;
                }
        }
        if(!lj){
            cout<<li<<"\n";
            continue;
        }
        if(a[li]-a[lj]>m)
            cout<<li;
        else if(a[li]-a[lj]==m)
            cout<<min(li,lj);
        else
            if((m-(a[li]-a[lj]))%2==0)
                cout<<min(li,lj);
            else
                cout<<max(li,lj);
        cout<<"\n";
    }
    return 0;
}
做法:输入后先得出最大与最大附近的最大,然后直接判断
但是莫名其妙WA#4,看题解貌似也没啥问题
不过试过了,不是因为没有 特判1 或是 没有建图

回复

0 条回复,欢迎继续交流。

正在加载回复...