fix(P3102): 修复动态规划计算中的模运算错误

确保在计算结果为负数时正确处理模运算,避免输出错误
This commit is contained in:
Zengtudor 2025-11-14 17:05:24 +08:00
parent 9f190cb94c
commit a288f0c5ec

View File

@ -34,12 +34,12 @@ static inline ll dfs(const ll l,const ll r){
for(ll j=0;j<clen;j++){
if(s[l+j]!=s[i+j])goto nxt1;
}
dp[l][r]=(dfs(l, i-1)*dfs(i, r)%p+dp[l][r])%p;
dp[l][r]=((i-l>r-i+1?dfs(l, i-1):dfs(i, r))+dp[l][r])%p;
nxt1:;
for(ll j=0;j<clen;j++){
if(s[i-1-j]!=s[r-j])goto nxt2;
}
dp[l][r]=(dfs(l, i-1)*dfs(i, r)%p+dp[l][r])%p;
dp[l][r]=((i-l>r-i+1?dfs(l, i-1):dfs(i, r))+dp[l][r])%p;
nxt2:;
}
return dp[l][r];
@ -53,5 +53,5 @@ int main(){
n=s.size();
s=' '+s;
dp.resize(n+1,std::vector<ll>(n+1));
std::cout<<dfs(1,n)-1<<"\n";
std::cout<<(dfs(1,n)-1+p)%p<<"\n";
}