[CF1152F2] Neko Rules the Catniverse (Large Version) 题解

注意到有可爱的相邻位置小限制,考虑对这个地方进行优化。

我们设 \(f_{i,j,s}\) 表示我们目前已经考虑了前 \(i\) 种数,已经加入了 \(j\) 个数到数列里,\(<i\)\(\ge i-4\) 的数的状态为 \(s\),则有:

\[f_{i,j,s}(\operatorname{popcount}(s)+1)\to f_{i+1,j+1,(2s+1)\&(2^m-1)} \]

\[f_{i,j,s}\to f_{i+1,j+1,(2s)\&(2^m-1)} \]

发现 \(j,s\) 长得一脸可以矩阵快速幂优化的样子,所以我们直接一手矩阵快速幂,将时间复杂度从 \(O(nk2^m)\) 优化到 \(O(k^38^m\log n)\)

#include<bits/stdc++.h>
using namespace std;
const int N=205,p=1e9+7;
int n,k,m,sz,ans;
struct matrix{int a[N][N];}a,b;
matrix operator*(matrix x,matrix y){matrix z;memset(z.a,0,sizeof(z.a));for(int i=0;i<=sz;i++) for(int j=0;j<=sz;j++) for(int d=0;d<=sz;d++)z.a[i][j]=(z.a[i][j]+1ll*x.a[i][d]*y.a[d][j])%p;return z;
}int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n>>k>>m,sz=(k<<m);for(int i=0;i<k;i++) for(int j=0;j<(1<<m);j++){int s=(j<<1)&((1<<m)-1);int cf=1+__builtin_popcount(j);b.a[(i<<m)+j][(i<<m)+s]=1;if(i==k-1) b.a[(i<<m)+j][sz]=cf;else b.a[(i<<m)+j][((i+1)<<m)+s+1]=cf;}b.a[sz][sz]=a.a[0][0]=1;while(n){if(n&1) a=a*b;b=b*b,n>>=1;}return cout<<a.a[0][sz],0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/908307.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 离线升级 RSYNC

前言:本文操作是在 CentOS-7 下执行的,不确定在其他 Linux 发布版是否能同样正常执行。1、检查前置依赖组件在安装 rsync 之前,需要确认已安装了相关依赖组件: gcc 、openssl-devel 、xxhash 、zstd 、lz4 。 rpm -qa | grep gccrpm -qa | grep openssl-develwhich xxhsumw…

AireOS WLC安装License报错

​1.概述 本文主要记录在AireOS的WLC上安装License错误的情况。License的类型也是传统的License,因为设备的型号已经EOL,相关的资料应该较少,这里进行可能问题的记录。 2.适用场景 型号:WLC2500,WLC5508 License类型:传统License文件,如.lic的文件类型。 其他的型号多数…

在VS2022中练习“栈”

1.vs不能使用#include<stdio.h>等c语言的头文件 解决方法: 在vs instuall中“c++控制台应用”右边的方框,点击它,从它的列表中找到windowsSDK10,点击安装,等待即可

weak_auth 攻防世界 简单密码

根据题目得知考察简单密码。 admin 123456 。。。。。。。

基于PI控制器的车辆行驶控制系统simulink建模与仿真

1.课题概述基于PI控制器的车辆行驶控制系统是一种常见的控制策略,它利用比例-积分(Proportional-Integral, PI)控制器来调整车辆的速度或方向以达到期望值。在本课题中,我们将完成基于PI控制器的车辆行驶控制系统simulink建模与仿真。通过PI控制器分别对车辆形式的角度和车…

cookie 攻防世界 应该不难的题 未完成。

看到的是这些 根据题目信息,关键信息在cookie中。f12看有look here 看到: 所以访问: 有该提示,需要看http响应。 应该就是要用burp来做了。这电脑没burp搁置。

分解因数

代码展示: #include <bits/stdc++.h> // 包含了几乎所有C++标准库头文件的万能头文件(不推荐在实际项目中使用,可能导致编译问题和命名冲突,但在竞赛等场景方便) using namespace std; // 使用标准命名空间,这样可以直接使用标准库中的函数和类型,无需加上std::…

请简述 Java 的内存模型,以及栈、堆、方法区分别存储什么内容?

jdk8以前jdk8以后内存分出的数据区域:程序计数器,Java 虚拟机栈,本地方法栈,堆,方法区,运行时常量池,字符串常量池。 栈: 局部变量表:存放方法参数和方法内定义的局部变量,包括基本数据类型(byte、short、int、long、float、double、char、boolean )以及对象引用。…

基于GA遗传优化TCN时间卷积神经网络时间序列预测算法matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];gen = 0; Js = 0.5*rand(NIND,1); Objv = (Js+eps); gen =…

project4

完结撒花!记录一下 Bustub Concurrency Control 的实现过程。 Resourceshttps://15445.courses.cs.cmu.edu/fall2022 课程官网 https://github.com/cmu-db/bustub Bustub Github Repo https://www.gradescope.com/ 自动测评网站 GradeScope,course entry code: PXWVR5 https:…