QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#643202 | #3040. Container | cppcppcpp3 | RE | 0ms | 0kb | C++20 | 2.0kb | 2024-10-15 19:46:53 | 2024-10-15 19:46:54 |
Judging History
answer
#include<bits/stdc++.h>
#define FIO(file) freopen(file".in","r",stdin),freopen(file".out","w",stdout)
#define int long long
#define pii pair<int,int>
#define fi first
#define se second
#define pb push_back
using namespace std;
const int N=1005;
const int inf=1e18;
int n,c0,c1,C;
string a,b;
vector<int> A,B[2];
int f[N][N],pr[N][N];
int _a[N],_b[N][2];
vector<pii> vl,vr,as;
void dfs(int x,int y){
if(!x && !y) return;
int u=A[x+y-1];
if(!pr[x][y]){
int v=B[0][x-1];
if(u>v) vl.pb({u,v});
if(u<v) vr.pb({u,v});
dfs(x-1,y);
}else{
int v=B[1][y-1];
if(u>v) vl.pb({u,v});
if(u<v) vr.pb({u,v});
dfs(x,y-1);
}
}
signed main(){
// FIO("machine");
cin.tie(nullptr)->sync_with_stdio(false);
cin>>n>>C>>a>>b,a=" "+a,b=" "+b;
for(int i=1;i<=n;++i){
if(a[i]=='B') A.pb(i),_a[i]=_a[i-1]+1;
else _a[i]=_a[i-1];
}
for(int i=1;i<=n;++i){
if(b[i]=='R') _b[i][0]=_b[i-1][0],_b[i][1]=_b[i-1][1];
else if(i&1) B[1].pb(i),_b[i][0]=_b[i-1][0],_b[i][1]=_b[i-1][1]+1;
else B[0].pb(i),_b[i][0]=_b[i-1][0]+1,_b[i][1]=_b[i-1][1];
}
memset(f,0x7f,sizeof f),f[0][0]=0;
c0=B[0].size(),c1=B[1].size();
for(int i=0;i<=c0;++i){
for(int j=0;j<=c1;++j){
if(i==c0 && j==c1) continue;
if(f[i][j]>=inf) continue;
int u=A[i+j];
if(i<c0){
int v=B[0][i],d=abs(u-v);
int val=(d/2)*(C+4)+(d&1)*(C+3)+max(0ll,_b[v][1]-j);
if(f[i+1][j]>f[i][j]+val) f[i+1][j]=f[i][j]+val,pr[i+1][j]=0;
}
if(j<c1){
int v=B[1][j],d=abs(u-v);
int val=(d/2)*(C+4)+(d&1)*(C+3)+max(0ll,_b[v][0]-i);
if(f[i][j+1]>f[i][j]+val) f[i][j+1]=f[i][j]+val,pr[i][j+1]=1;
}
}
}
dfs(c0,c1),reverse(vl.begin(),vl.end());
for(auto h:vl){
int u=h.fi,v=h.se;
while(u-v>1) as.pb({u-2,u}),u-=2;
if(u^v) as.pb({v,u}),u=v;
}
for(auto h:vr){
int u=h.fi,v=h.se;
while(v-u>1) as.pb({u,u+2}),u+=2;
if(u^v) as.pb({u,v}),u=v;
}
cout<<as.size()<<"\n";
for(auto h:as) cout<<h.fi<<' '<<h.se<<"\n";
return 0;
}
詳細信息
Test #1:
score: 0
Runtime Error
input:
5 2 11221 21112