停课day5

一转眼,已经停课五天了。

高二大佬们已经都走了,在机房里面呆着,有时感觉很孤寂。

但是为了能学好竞赛,这些都是在所不惜的。

好像多打打比赛啊,可是cf要FQ,洛谷之类的比赛还不勤。

哎,先去学一发SPFA

dsfz 周四考试第二题dp

题面有错

for(int i=n-1;i>=1;i--){
        dp[i][a[i]-1]=(dp[i+1][a[i]]+a[i]*dp[i+1][a[i]-1])%mod;
        dp[i][a[i]]=(a[i]*dp[i+1][a[i]-1]+dp[i+1][a[i]])%mod;
 }

这是dp试(从后往前推会好一点吧) 因为对于每一个,a[i]成立的情况,无非两种,即前面+a[i]或a[i]-1;

而如果+a[i]-1则在i处必须开一个以i为左端点的区间就转化成了+a[i]的情况

而对于+a[i] 又分为两种情况,有括回,无括回。

有括回 会有a[i]种情况,对答案的贡献为a[i]*dp[i+1][a[i]-1]

无括回 dp[i+1][a[i]]

别忘了边缘要特判

if(a[n]>1){

        cout<<0;
        return 0;
    }
    dp[n][0]=1;
    if(a[n]==1)dp[n][1]=1;
原文地址:https://www.cnblogs.com/Amphetamine/p/7027775.html