bzoj 5003: 与链

来源:互联网 发布:海岛奇兵能量神像数据 编辑:程序博客网 时间:2024/06/06 15:56

前言

这题是羊教我的

题解

由于有自环,所以每个数其实就是可以选任意次
考虑你选出来的k个数,从上往下看,对于每一位,肯定都是一段1,然后一段0的形式
于是我们就可以吧每一位都分开考虑
其实就是每一位可以选择不超过k个1,然后要你选出来和为n,问你方案数。。
然后我们可以DP
f[i][j]表示前i位,和为j有多少种方案
然后对于每一个,我们可以枚举这一位放多少个1来转移
但是这样是nklogn
我们发现,对于一个数i,他减多少个k2i,对于膜2i的余数都是一样的。。
于是我们就可以统计一个前缀和,搞一搞就可以了

CODE:

#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;typedef long long LL;const LL MOD=1e9+9;const LL N=100005;LL k,n;LL f[2][N];//前i位,和为j有多少种方案LL h[N];//当前膜2^i 的前缀和是多少int main(){    memset(f,0,sizeof(f));    scanf("%lld%lld",&k,&n);    f[0][0]=1;    int st=0;    for (LL u=0;u<=19;u++)//多少位    {        memset(h,0,sizeof(h));        LL x=1<<u;        if (x>n) break;        st^=1;        for (int i=0;i<=n;i++)        {            h[i%x]=(h[i%x]+f[st^1][i])%MOD;            if (i-x*(k+1)>=0) h[i%x]=(h[i%x]-f[st^1][i-x*(k+1)]+MOD)%MOD;            f[st][i]=h[i%x];        }    }    printf("%lld\n",f[st][n]);    return 0;}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 6加10等于1什么求答案 neversaygoodbye课后答案 待定系数法求二次函数解析式 求约会图片 激情约会 特别约会 求约会的图片 求组词 求加偏旁组词 求的组词有什么 求组词有哪些 缘分可遇不可求歌曲 缘求鱼 同城求缘app可靠吗 缘什么求鱼 求缘 十世 万界无尽神装 缘木可求鱼 求那种网址 求手机网址 求网址图片 求网址你们懂得 求一网址 求推荐 求帮助 求种子网址 求萝莉种子 求种子下载 2019求个幼童资源网站 求一个幼童网站 求个幼童网站 求网站2019 2019求男生都懂的网站 求个幼童资源网站 求个网站2019 男人都懂的网站急求2019 男人网站求推荐2019 求网站2019谢谢 求网站晚上 真实求包网站 求初中生萝莉免费网站 求个国产幼童网站2017