关闭

[递推] Codeforces 660E Educational Codeforces Round 11 E. Different Subsets For All Tuples

217人阅读 评论(2) 收藏 举报
分类:

对于一个确定串s,求不同子序列的个数有经典dp

  • fi,si=jfi1,j
  • fi,j=fi1,j,jsi

因为转移都是形式一样的我试着把所有串的fi都加起来,然后就发现Fj除了j=ϕ之外都是一样的,然后就记录两个量,然后就递推出来了

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<iostream>
using namespace std;
typedef long long ll;

#define read(x) scanf("%d",&(x))

ll n,m,P;

int main(){
  freopen("invisible.in","r",stdin);
  freopen("invisible.out","w",stdout);
  cin>>n>>m; P=1e9+7;
  ll x=1,y=0;
  for (int i=1;i<=n;i++){
    ll sum=(x+y*m)%P;
    x=x*m%P;
    y=(sum+y*(m-1))%P;
  }
  cout<<(x+y*m)%P<<endl;
  return 0;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:309417次
    • 积分:12408
    • 等级:
    • 排名:第1311名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:54条
    最新评论