WA求调
查看原帖
WA求调
672237
qinshi0308楼主2024/3/23 22:51

RT,感觉自己的思路没毛病,但是WA了

https://atcoder.jp/contests/abc338/submissions/51519676

# include <bits/stdc++.h>
using namespace std;
long long arr[200010];
long long brr[200010];
int main(){
    long long n,m;
    cin>>n>>m;
    for(long long i=0;i<m;i++){
        cin>>arr[i];
    }
    long long a=0;
    for(long long i=1;i<m;i++){
        if(arr[i-1]<arr[i]){
            long long x=arr[i]-arr[i-1];
            long long y=arr[i-1]+n-arr[i];
//            cout<<x<<" "<<y<<endl;
            if(x<=y){
                brr[arr[i-1]]+=y-x;
                brr[arr[i]+1]-=y-x;
            }else{
                a+=x-y;
                brr[arr[i-1]]-=x-y;
                brr[arr[i]+1]+=x-y;
            }
        }else{
            long long x=arr[i-1]-arr[i];
            long long y=arr[i]+n-arr[i-1];
//            cout<<x<<" "<<y<<endl;
            if(x<=y){
                brr[arr[i]]+=y-x;
                brr[arr[i-1]+1]-=y-x;
            }else{
                a+=x-y;
                brr[arr[i]]-=x-y;
                brr[arr[i-1]+1]+=x-y;
            }
        }
    }
    long long minn=LONG_LONG_MAX;
    long long mini;
    for(long long i=1,sum=0;i<=n;i++){
        sum+=brr[i];
        if(minn>sum+a){
            minn=sum+a;
            mini=i;
        }
    }
//    cout<<mini<<endl;
    long long ans=0;
    for(long long i=1;i<m;i++){
        if(arr[i-1]<arr[i]){
            long long x=arr[i]-arr[i-1];
            long long y=arr[i-1]+n-arr[i];
//            cout<<x<<" "<<y<<" ";
            if(arr[i-1]<=mini&&mini<arr[i]){
//                cout<<"#y"<<endl;
                ans+=y;
            }else{
//                cout<<"#x"<<endl;
                ans+=x;
            }
        }else{
            long long x=arr[i-1]-arr[i];
            long long y=arr[i]+n-arr[i-1];
//            cout<<x<<" "<<y<<" ";
            if(arr[i]<=mini&&mini<arr[i-1]){
//                cout<<"#y"<<endl;
                ans+=y;
            }else{
//                cout<<"#x"<<endl;
                ans+=x;
            }
        }
    } 
    cout<<ans;
    return 0;
}
2024/3/23 22:51
加载中...