QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#789228#3040. Containerthomas0702WA 1ms4784kbC++141.6kb2024-11-27 19:36:442024-11-27 19:36:44

Judging History

This is the latest submission verdict.

  • [2024-11-27 19:36:44]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 4784kb
  • [2024-11-27 19:36:44]
  • Submitted

answer

#include<bits/stdc++.h>
#define pb push_back
using namespace std;
typedef pair<int,int> pii;
const int maxn=505;
int testid,N,C,ps[maxn],pt[2][maxn],sum[2][maxn],f[maxn][maxn],fr[maxn][maxn],pos[maxn],d[maxn];
char s[maxn],t[maxn];
vector<int> E[maxn];
int main(){
	scanf("%d%d%d%s%s",&testid,&N,&C,s+1,t+1);
	for(int i=1;i<=N;i++){
		sum[0][i]=sum[0][i-1],sum[1][i]=sum[1][i-1];
		if(s[i]=='2') ps[++ps[0]]=i;
		if(t[i]=='2') pt[i&1][++pt[i&1][0]]=i,sum[i&1][i]++;
	}
	memset(f,0x3f,sizeof f);
	f[0][0]=0;
	for(int i=0;i<ps[0];i++){
		for(int j=0;j<=i;j++){
			if(j<pt[0][0]){
				int p=pt[0][j+1],d=abs(p-ps[i+1]),
				tmp=f[i][j]+(d+1)/2*C+d/2*4+(d&1)*3+max(0,sum[1][p]-(i-j));
				if(tmp<f[i+1][j+1]) f[i+1][j+1]=tmp,fr[i+1][j+1]=0;
			}
			if(i-j<pt[1][0]){
				int p=pt[1][i-j+1],d=abs(p-ps[i+1]),
				tmp=f[i][j]+(d+1)/2*C+d/2*4+(d&1)*3+max(0,sum[0][p]-j);
				if(tmp<f[i+1][j]) f[i+1][j]=tmp,fr[i+1][j]=1;
			}
		}
	}
	for(int i=ps[0],j=pt[0][0];i;)
		if(fr[i][j]) pos[i]=pt[1][i-j],i--;
		else pos[i]=pt[0][j],i--,j--;
	for(int i=1;i<=ps[0];i++)
		for(int j=i+1;j<=ps[0];j++)
			if(pos[i]<ps[i]&&pos[j]<ps[j]) d[j]++,E[i].pb(j);
			else if(pos[i]>ps[i]&&pos[j]>ps[j]) d[i]++,E[j].pb(i);
	queue<int> q;vector<pii> ans;
	for(int i=1;i<=ps[0];i++) if(!d[i]) q.push(i);
	while(!q.empty()){
		int u=q.front(),x=ps[u],y=pos[u];q.pop();
		while(x<=y-2) ans.pb({x,x+2}),x+=2;
		while(x>=y+2) ans.pb({x-2,x}),x-=2;
		if(x<y) ans.pb({x,y});
		if(x>y) ans.pb({y,x});
		for(int v:E[u]) if(!--d[v]) q.push(v);
	}
	printf("%d\n",(int)ans.size());
	for(pii i:ans) printf("%d %d\n",i.first,i.second);
	return 0;
}

详细

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 4784kb

input:

5 2
11221
21112

output:

1
0 1

result:

wrong answer Integer parameter [name=l] equals to 0, violates the range [1, 5]