玄学RE,求大佬救命

P2679 [NOIP2015 提高组] 子串

@[区区致命伤](/user/181521) 是访问了负下标吗?
by shitbro @ 2020-08-07 18:52:01


当 i=1 时,$a[i-2]$ 是什么?
by 天命之路 @ 2020-08-07 19:06:45


@[天命之路](/user/226435) 草,好像是这样
by 珈乐唯毒 @ 2020-08-07 19:52:18


@[天命之路](/user/226435) 但这样它又不re了,什么鬼? ``` #include<bits/stdc++.h> using namespace std; const int mol=1e9+7; string a,b; int n,m,k,dp[1005][205][205],l[1005][205]; int main(){ cin>>n>>m>>k; cin>>a>>b; dp[0][0][0]=1; for(int i=1;i<=n;i++){ dp[i][0][0]=1; for(int j=1;j<=min(i,m);j++){ for(int w=1;w<=min(j,k);w++){ if(a[i-1]==b[j-1]){ dp[i][j][w]=dp[i-1][j-1][w-1]; dp[i][j][w]%=mol; if(a[i-2]==b[j-2]){ dp[i][j][w]+=dp[i-1][j-1][w]-dp[i-2][j-1][w]; dp[i][j][w]%=mol; } } dp[i][j][w]+=dp[i-1][j][w]; dp[i][j][w]%=mol; } } } cout<<dp[n][m][k]; return 0; } ```
by 珈乐唯毒 @ 2020-08-07 19:53:17


@[区区致命伤](/user/181521) 你到底改了哪儿
by 天命之路 @ 2020-08-07 19:55:32


@[天命之路](/user/226435) 在dp数组后加了一个l数组
by 珈乐唯毒 @ 2020-08-07 19:57:15


@[区区致命伤](/user/181521) 我用你那个代码交了一遍,居然MLE了
by 天命之路 @ 2020-08-07 19:59:22


@[区区致命伤](/user/181521) 如果MLE的话 使用滚动数组 因为只跟前$i-1$和$i-2$有关系 所以你建三个 $f[205][205]$的数组就可以了
by shitbro @ 2020-08-07 20:27:18


@[_Daybreak](/user/90972) 我知道要用滚动数组啊。。。纠结的只是为什么会RE嘤嘤嘤嘤
by 珈乐唯毒 @ 2020-08-08 09:02:13


|