QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#645318 | #3040. Container | Y204335 | WA | 0ms | 8364kb | C++14 | 2.1kb | 2024-10-16 17:43:45 | 2024-10-16 17:43:45 |
Judging History
answer
#include<bits/stdc++.h>
#define fir first
#define sec second
using namespace std;
const int N=1010,inf=0x3f3f3f3f;
int n,c,cnt[2][N],dp[N][N],lst[N][N],nxt[N],sum[N];
string s,t;
vector<int>a,b[2],e[N];
vector<pair<int,int>>ans;
int calc(int x){
return ((x/2+(x&1))*c+x/2*4+3*(x&1));
}
int main(){
ios::sync_with_stdio(0);
cin.tie(nullptr);
cin>>n>>c>>s>>t;
s='#'+s;
t='#'+t;
for(int i=1;i<=n;i++){
cnt[0][i]=cnt[0][i-1];
cnt[1][i]=cnt[1][i-1];
if(s[i]=='B'){
a.push_back(i);
}
if(t[i]=='B'){
b[i&1].push_back(i);
cnt[i&1][i]++;
}
}
memset(dp,0x3f,sizeof(dp));
dp[0][0]=0;
for(int i=0;i<(int)a.size();i++){
for(int j=0;j<=i;j++){
if(dp[i][j]!=inf){
if(j+1<=(int)b[0].size()){
int temp=dp[i][j]+calc(abs(b[0][(j+1)-1]-a[(i+1)-1]))+max(0,cnt[1][b[0][(j+1)-1]]-(i-j));
if(dp[i+1][j+1]>temp){
dp[i+1][j+1]=temp;
lst[i+1][j+1]=1;
}
}
if(i-j+1<=(int)b[1].size()){
int temp=dp[i][j]+calc(abs(b[1][(i-j+1)-1]-a[(i+1)-1]))+max(0,cnt[0][b[1][(i-j+1)-1]]-j);
if(dp[i+1][j]>temp){
dp[i+1][j]=temp;
lst[i+1][j]=0;
}
}
}
}
}
int i=a.size(),j=b[0].size();
while(i){
if(lst[i][j]){
i--;
j--;
nxt[i]=b[0][j];
}
else{
i--;
nxt[i]=b[1][i-j];
}
}
for(int i=0;i<(int)a.size();i++){
for(int j=i+1;j<(int)a.size();j++){
if(nxt[i]<nxt[j]){
if(a[i]<nxt[i]){
e[j].push_back(i);
sum[i]++;
}
else{
e[i].push_back(j);
sum[j]++;
}
}
}
}
queue<int>du;
for(int i=0;i<(int)a.size();i++){
if(!sum[i]){
du.push(i);
}
}
while(!du.empty()){
int nw=du.front(),x=a[nw];
du.pop();
if(x>nxt[nw]){
while(nxt[nw]<=x-2){
ans.push_back({x-2,x});
x-=2;
}
}
if(x<nxt[nw]){
while(x+2<=nxt[nw]){
ans.push_back({x,x+2});
x+=2;
}
}
if(x!=nxt[nw]){
if(x>nxt[nw])swap(x,nxt[nw]);
ans.push_back({x,nxt[nw]});
}
for(auto i:e[nw]){
sum[i]--;
if(!sum[i]){
du.push(i);
}
}
}
cout<<ans.size()<<endl;
for(auto i:ans){
cout<<i.fir<<' '<<i.sec<<endl;
}
return 0;
}
详细
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 8364kb
input:
5 2 11221 21112
output:
0
result:
wrong answer invalid plan.