社区讨论
我的代码WA,求调
P13832 【MX-X18-T4】「FAOI-R6」绿茶参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhjd1s5g
- 此快照首次捕获于
- 2025/11/04 00:34 4 个月前
- 此快照最后确认于
- 2025/11/04 00:34 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+5, mod=998244353, inf=1e14;
int n;
int c[N];
string s1, s2;
int dp[N];
void work(){
cin >> n;
cin >> s1 >> s2;
reverse(s1.begin(), s1.end());
reverse(s2.begin(), s2.end());
s1 += '0';
s2 += '0';
for(int i = n-1; i >= 0; i--)
cin >> c[i];
for(int i = 0; i < n; i++)
if(s1[i] > s2[i]) {
puts("-1");
return;
}
int ans = 0;
for(int i = 0; i <= n; i++) dp[i] = 0;
dp[0] = (s1[0] != s2[0]) * c[0];
for(int i = 1; i <= n; i++){
if(s2[i] == '0'){
ans += dp[i-1];
dp[i] = dp[i-1];
continue;
}
if(s1[i] == '0'){
int mi = inf;
for(int j = i; j >= 0 && s2[j] == '1'; j--)
mi = min(mi, c[j]);
dp[i] = dp[i-1] + mi;
for(int j = i-1; j >= -1 && (j == -1 || (s2[j+1] == '1' && s1[j+1] == '0')); j--)
dp[i] = min(dp[i], (j < 0 ? 0 : dp[j]) + c[j+1] + c[i]);
} else {
dp[i] = dp[i-1];
}
}
cout << ans << "\n";
}
signed main(){
int _;
cin >> _;
while(_--) work();
return 0;
}
我写的暴力,想后面再优化,但WA了
回复
共 1 条回复,欢迎继续交流。
正在加载回复...