Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
98282 CSYZ_LiWenX 早凉爱旅行2 C++ 解答错误 30 1000 MS 14340 KB 1396 2023-08-14 14:17:08

Tests(9/13):


#include<bits/stdc++.h> #define int long long using namespace std; struct Q{ int op,a,b,c,d; }q[200001]; int x[200001],y[200001]; int f[200001][2],n,m; int len(int x,int y,int xx,int yy){ return abs(x-xx)+abs(y-yy); } bool B=1,A=1; signed main(){ // freopen("_.in","r",stdin); ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m; for(int i=1;i<n;i++){ cin>>x[i]>>y[i]; if(x[i]!=y[i]) B=0; } for(int i=1;i<=m;i++){ cin>>q[i].op; if(q[i].op==1) cin>>q[i].a>>q[i].b>>q[i].c,A=0; else cin>>q[i].a>>q[i].b>>q[i].c>>q[i].d; if(q[i].op==1&&q[i].b!=q[i].c) B=0; } if(B){ } else{ for(int i=1;i<=m;i++){ if(q[i].op==1){ x[q[i].a]=q[i].b; y[q[i].a]=q[i].c; } else{ int X=q[i].a,Y=q[i].b,xx=q[i].c,yy=q[i].d; int s=max(X,Y); int t=max(xx,yy); if(s==t){ cout<<len(X,Y,xx,yy)<<'\n'; continue; } if(s>t){ swap(s,t); swap(X,xx),swap(Y,yy); } f[s][0]=len(X,Y,s,x[s]);// s x[s] f[s][1]=len(X,Y,y[s],s);// y[s] s for(int i=s+1;i<t;i++){ f[i][0]=min(f[i-1][0]+len(i,x[i-1],i,x[i]),f[i-1][1]+len(y[i-1],i,i,x[i]))+1; f[i][1]=min(f[i-1][0]+len(i,x[i-1],y[i],i),f[i-1][1]+len(y[i-1],i,y[i],i))+1; } int ans=1e9; ans=min(f[t-1][0]+1+len(t,x[t-1],xx,yy),f[t-1][1]+1+len(y[t-1],t,xx,yy)); cout<<ans<<'\n'; } } } }


测评信息: