往复

Coldhac 做不出题了,他在长为 n 的走廊里走来走去。从位置 1 开始, 每次他会向前走长为 i ∈ [1, k] 的一步(不能超出走廊的范围),直至到达位 置 n。

在想出正解前,Coldhac 这样走了 m 次。你想知道他几乎经过了所有 位置的方案数模 109 + 7 的值。两种方案不同当且仅当总步数不同或某一步 的长度不同。

几乎的定义:至多有一个位置没有被直接到达。你可以参照样例解释 来更好地理解这句话。

对于所有测试点,满足 n ≤ 109 , m ≤ 16, k ≤ 3。

题解

此处只讨论 k = 3 的情况。

稍微压一下状态,fi,x,y,d 表示第 i 个格子有 x 个落点,第 i − 1 个格子 有 y 个落点(说明 i − 2 有 m − x − y 个落点),计算过的格子里有 d ∈ [0, 1] 个没有经过的方案数。

我是万万没想到还可以这样设状态。

枚举 i 和 i − 1 中分别选出多少跳到 i + 1 即可,如果此时 i + 1 没有 落点,我们令 d + +。

显然 i 一维可以矩乘,复杂度 O(3063 log n)。

CO int N=306;
int c[21][21];
typedef tuple<int,int,int> tup;
int K,id;
map<tup,int> H;
int cid(int x,int y,int d){
if(K==2) y=0; // m-x-y
return H[tup(x,y,d)];
}
int T[N][N],I[N][N],A[N],B[N]; int main(){
freopen("iterate.in","r",stdin),freopen("iterate.out","w",stdout);
int n=read<int>()-1,m=read<int>();
if(read(K)==1) return puts("1"),0;
for(int i=0;i<=m;++i){
c[i][0]=c[i][i]=1;
for(int j=1;j<i;++j) c[i][j]=add(c[i-1][j-1],c[i-1][j]);
}
for(int i=0;i<=m;++i)for(int j=0;K==3?i+j<=m:j<1;++j)
for(int a=0;a<2;++a) H[tup(i,j,a)]=id++;
for(int i=0;i<=m;++i)for(int j=0;K==3?i+j<=m:j<1;++j){
int k=m-i-j;
for(int a=0;a<2;++a)
for(int x=0;x<=i;++x)for(int y=0;y<=j;++y){
int b=x+y+k==0;
if(a+b<=1) T[cid(i,j,a)][cid(x+y+k,i-x,a|b)]=mul(c[i][x],c[j][y]);
}
}
A[cid(m,0,0)]=1;
for(;n;n>>=1){
if(n&1){
for(int i=0;i<id;++i)for(int j=0;j<id;++j)
B[j]=add(B[j],mul(A[i],T[i][j]));
for(int i=0;i<id;++i) A[i]=B[i],B[i]=0;
}
for(int i=0;i<id;++i)for(int j=0;j<id;++j)
for(int k=0;k<id;++k) I[i][j]=add(I[i][j],mul(T[i][k],T[k][j]));
for(int i=0;i<id;++i)for(int j=0;j<id;++j) T[i][j]=I[i][j],I[i][j]=0;
}
printf("%d\n",add(A[cid(m,0,0)],A[cid(m,0,1)]));
return 0;
}

test20191020 往复的更多相关文章

  1. 记一次Pr中视频蜜汁卡顿往复和解决方法

    目录 问题 换素材的起因 灵异素材 无端联想 解决 问题 换素材的起因 本来视频剪了一晚剪完了,导出一看,好家伙,糊到上世纪.原来素材的像素大小都没法看,这视频素材我是从别人U盘拷过来的,可他竟然是用 ...

  2. 周而复始,往复循环,递归、尾递归算法与无限极层级结构的探究和使用(Golang1.18)

    所有人都听过这样一个歌谣:从前有座山,山里有座庙,庙里有个和尚在讲故事:从前有座山....,虽然这个歌谣并没有一个递归边界条件跳出循环,但无疑地,这是递归算法最朴素的落地实现,本次我们使用Golang ...

  3. animation css3动画与CSS3 @keyframes担配使用创建往复平缓动画

    通过 @keyframes 规则,您能够创建动画. 创建动画的原理是,将一套 CSS 样式逐渐变化为另一套样式. 在动画过程中,您能够多次改变这套 CSS 样式. 以百分比来规定改变发生的时间,或者通 ...

  4. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  5. 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法

    若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...

  6. 自己来实现一个简易的OCR

    来做个简易的字符识别 ,既然是简易的 那么我们就不能用任何的第三方库 .啥谷歌的 tesseract-ocr, opencv 之类的 那些玩意是叼 至少图像处理 机器视觉这类课题对我这种高中没毕业的人 ...

  7. 换个角度看微信小程序[推荐]

    去年参加几次技术沙龙时,我注意到一个有意思的现象:与之前大家统一接受的换名片不同,有些人并不愿意被添加微信好友--"不好意思,不熟的人不加微信". 这个现象之所以有意思,是因为名片 ...

  8. mysql join 和left join 对于索引的问题

    今天遇到一个left join优化的问题,搞了一下午,中间查了不少资料,对MySQL的查询计划还有查询优化有了更进一步的了解,做一个简单的记录: select c.* from hotel_info_ ...

  9. Atitit ftp原理与解决方案

    Atitit ftp原理与解决方案 Deodeo sh shmayama ..search ftp.. 1. http和ftp都只是通信协议,就是只管传输那一块的,那为什么不能使用ftp来显示网页?? ...

随机推荐

  1. | C语言I作业02

    C语言I博客作业02 标签: 18软件2班 李煦亮 问题 答案 这个作业属于那个课程 C语言程序设计I 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/C ...

  2. [转帖]美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题

    美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题 博客分类: redis 运维 redis clustercluster-node-timeoutfailover  转载请 ...

  3. windows 安装 scrapy (python3.7)

    今天想要用scrapy爬取数据,想到原来刷过机没有这个库了就重新安装了一遍 安装scrapy 需要的东西   https://pan.baidu.com/s/1kuLvGQBG8tMTCY3WDLuU ...

  4. 使用scrapy框架做武林中文网的爬虫

    一.安装 首先scrapy的安装之前需要安装这个模块:wheel.lxml.Twisted.pywin32,最后在安装scrapy pip install wheel pip install lxml ...

  5. Win10 UEFI 系统安装教程

    1:首先我们需要先拿一个U盘,制作一个带UEFI PE.(网上的大白菜以及老毛桃都可以,我用的是从网上找的WIN10 PE.WIN10 PE的好处是集成了NVME驱动,可以认得到SM951 NVME版 ...

  6. RocketMQ Release Note(RocketMQ升级日志译文)

    RocketMQ升级日志 1 4.2.0 原版Release Note 1.1 New Feature 支持传输层安全性 客户端支持log4j2 PushConsumer支持条数与大小维度的流控 1. ...

  7. B/S架构详解

    学习笔记:  * B/S架构详解 * 资源分类:            1. 静态资源:                * 使用静态网页开发技术发布的资源.                * 特点:  ...

  8. mvc中hangfire全局简单配置

    public void Configuration(IAppBuilder app)       {           ConfigureAuth(app);           //指定使用Sql ...

  9. 前端1-----块级标签(独占一行),排版标签(样式排版),其他标签,form表单(input的多种类型)

    前端1-----块级标签(独占一行),排版标签(样式排版),其他标签,form表单(input的多种类型) 一丶HTML块级标签 排版标签 p 标签: 段落标签,会自动在段落上下加上空白来分开 p标签 ...

  10. Resource注解无法导入依赖使用javax.annotation的注解类

    Resource注解无法导入依赖使用javax.annotation的注解类 使用javax.annotation的注解类 javax.annotation.Resource 注解在eclipse中无 ...