社区讨论

我的代码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 条回复,欢迎继续交流。

正在加载回复...