QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#311363 | #3286. Black or White | NYCU_CartesianTree# | WA | 14ms | 19164kb | C++20 | 2.0kb | 2024-01-22 11:23:46 | 2024-01-22 11:23:48 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define F first
#define S second
#define pb push_back
int bitw[500005],bitb[500005];
int pwb[500005],pbw[500005],dp[500005];
int n,k;
void updw(int now,int val){
while(now<=n) bitw[now]=min(val, bitw[now]),now+=now&-now;
}
int valw(int now){
int ans=1e18;
while(now>=1) ans = min(ans, bitw[now]), now-=now&-now;
return ans;
}
void updb(int now,int val){
while(now<=n) bitb[now]=min(val, bitb[now]),now+=now&-now;
}
int valb(int now){
int ans=1e18;
while(now>=1) ans = min(ans, bitb[now]), now-=now&-now;
return ans;
}
void solve(){
cin>>n>>k;
string t1,t2;
cin>>t1>>t2;
for(int i=1;i<=n;i++) bitb[i]=bitw[i]=1e18;
for(int i=0;i<t2.size()-1;i++){
if(t2[i]!=t2[i+1]){
if(t2[i]=='W') pwb[i+1]=1;
else pbw[i+1]=1;
}
pwb[i+1]+=pwb[i], pbw[i+1]+=pbw[i];
// cout<<pbw[i]<<" "<<pwb[i]<<"\n";
}
for(int i=0;i<t2.size();i++){
int pp=i-k;
if(pp<0) pp=0;
pp=n-pp;
int v;
if(t2[i]=='W'){
if(i<k)
dp[i]=pwb[i]+1+(t2[0]=='B');
else dp[i]=1e18;
// cout<<dp[i]<<" "<<pwb[i]<<" "<<i<<"\n";
v=valw(pp);
dp[i]=min(dp[i],v+pwb[i]+1);
}
else{
if(i<k)
dp[i]=pbw[i]+1+(t2[0]=='W');
else dp[i]=1e18;
v=valb(pp);
dp[i]=min(dp[i],v+pbw[i]+1);
}
// cout<<v<<" "<<pwb[i]<<" "<<pbw[i]<<"\n";
if(t2[i]==t1[i]){
if(i)
dp[i]=min(dp[i],dp[i-1]);
else dp[i]=0;
}
if(i!=t2.size()-1){
updw(n-i,dp[i]-pwb[i]);
updb(n-i,dp[i]-pbw[i]);
}
// cout<<dp[i]<<" "<<dp[i]-pwb[i]<<"\n";
}
cout<<dp[n-1]<<"\n";
}
signed main(){
ios::sync_with_stdio(0);cin.tie(0);
solve();
return 0;
}
详细
Test #1:
score: 0
Wrong Answer
time: 14ms
memory: 19164kb
input:
274694 5174 BBWWWWWBWBBBWBWBWBWBBBBWWBBBBBWWBWWBWWBBWBWWBBBWWWWWBWBBBBWWBBBWWBWWBBWBBWWBBWWBWWBBWWWWBWBBWBBBWBWBWBBBBWBWWWBWWWBBWBBWWWWBWWWWBBBWBWWBWBBBWBBWWWWBBWBBBWBWBBBBWBBBBBWBBWWBWBBBBWBWWWWWBWBBBBWWWWBBWWWBWBWBWWWBWWBBBBWBBWBWBBWWWWBBBWBBBWBWWBWWBBBWWWWBBWWWBBBWWBWWWBBWBBBWBBBBWBWWBWBWBBBBBBWW...
output:
60858
result:
wrong answer 1st lines differ - expected: '63250', found: '60858'