【BZOJ2004】[Hnoi2010]Bus 公交线路 状压+矩阵乘法
【BZOJ2004】[Hnoi2010]Bus 公交线路
Description
Input
Output
仅包含一个整数,表示满足要求的方案数对30031取模的结果。
Sample Input
样例二:5 2 3
样例三:10 2 4
Sample Output
3
81
HINT
题解:看到P和K很小想到状压。用f[i][S]表示已经覆盖了前i个车站,每个车的位置的状态为S的方案数(S只包含前P个车站)。
由于n很大,考虑矩乘优化。我们将没有用的状态扔掉,最终矩阵大小是不超过$C_{10}^5\times C_{10}^5=252\times 252$的。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int P=30031;
int n,m,k,tot;
struct M
{int v[260][260];M () {memset(v,0,sizeof(v));}int * operator [] (int a) {return v[a];}M operator * (const M &a) const{M b;int i,j,k;for(i=1;i<=tot;i++) for(j=1;j<=tot;j++) for(k=1;k<=tot;k++) b.v[i][j]=(b.v[i][j]+v[i][k]*a.v[k][j])%P;return b;}
}S,T;
int r[1<<10],cnt[1<<10];
inline void pm(int y)
{while(y){if(y&1) S=S*T;T=T*T,y>>=1;}
}
int main()
{scanf("%d%d%d",&n,&k,&m);int i,j;for(i=1;i<(1<<m);i++){cnt[i]=cnt[i-(i&-i)]+1;if(cnt[i]==k) r[i]=++tot;}for(i=1;i<(1<<m);i++) if(r[i]){if(i&1) T[r[i]][r[(i>>1)|(1<<(m-1))]]++;else for(j=0;j<m;j++) if((i>>j)&1) T[r[i]][r[((i^(1<<j))>>1)|(1<<(m-1))]]++;}S[1][r[((1<<k)-1)<<(m-k)]]=1;pm(n-k);printf("%d",S[1][r[((1<<k)-1)<<(m-k)]]);return 0;
}
转载于:https://www.cnblogs.com/CQzhangyu/p/7965446.html
【BZOJ2004】[Hnoi2010]Bus 公交线路 状压+矩阵乘法相关推荐
- BZOJ 2004 公交线路(状压DP+矩阵快速幂)
注意到每个路线相邻车站的距离不超过K,也就是说我们可以对连续K个车站的状态进行状压. 然后状压DP一下,用矩阵快速幂加速运算即可. #include <stdio.h> #include ...
- BZOJ 2004 [Hnoi2010]Bus 公交线路
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2004 题解 状压dp,记f[i][S]f[i][S]f[i][S]表示[1,i−p][1 ...
- 线性代数三之状压DP的矩阵加速——Quad Tiling,Bus公交线路
状压与矩阵加速的藕断丝连 Quad Tiling description solution code [Hnoi2010]Bus 公交线路 description solution code Quad ...
- 【洛谷】P1357 花园(状压+矩阵快速幂)
题目 传送门:QWQ 分析 因为m很小,考虑把所有状态压成m位二进制数. 那么总状态数小于$ 2^5 $. 如果状态$ i $能转移到$ j $,那么扔进一个矩阵,n次方快速幂一下. 答案是对角线之和 ...
- 【BZOJ2004】公交线路(动态规划,状态压缩,矩阵快速幂)
[BZOJ2004]公交线路(动态规划,状态压缩,矩阵快速幂) 题面 BZOJ 题解 看到\(k,p\)这么小 不难想到状态压缩 看到\(n\)这么大,不难想到矩阵快速幂 那么,我们来考虑朴素的\(d ...
- [2021-07-19 内测NOIP] 操作(状压DP),异或(字典树),等级(线段树),矩阵(DP)
[2021-07-19 内测] NOIP 操作 description solution code 异或 description solution code 等级 description soluti ...
- BZOJ 4000: [TJOI2015]棋盘( 状压dp + 矩阵快速幂 )
状压dp, 然后转移都是一样的, 矩阵乘法+快速幂就行啦. O(logN*2^(3m)) ------------------------------------------------------- ...
- 2018.09.28 hdu5434 Peace small elephant(状压dp+矩阵快速幂)
传送门 看到n的范围的时候吓了一跳,然后发现可以矩阵快速幂优化. 我们用类似于状压dp的方法构造(1(1(1<<m)∗(1m)*(1m)∗(1<<m)m)m)大小的矩阵. 然后 ...
- 【Codeforces Gym - 101635C Macarons 】【矩阵快速幂+状压】【dfs时间换空间】
[链接] http://codeforces.com/gym/101635/attachments [题意] 求用1*1,1*2的方格填n*m的矩阵的方法数 [知识点] 状压dfs+矩阵快速幂 [分析 ...
最新文章
- 负载均衡器之 Haproxy
- 多分类神经网络与原子核
- linux和哪些主机配了互信,linux主机互信
- 送计算机教授教师节礼物,教师节送教授什么礼物好
- C语言内存字节对齐小结
- 硬件:选购CPU和显卡需了解的参数,TDP、SDP、ACP、GCP、TBP是什么?
- 计算机网络资料篇(一)——HTTP
- python wget 卡住_python – Paramiko在执行大型wget命令时挂起
- php面向对象编程调用结果,【PHP面向对象(OOP)编程入门教程】18.__call()处理调用错误...
- codeforces 460C - Present 二分加模拟
- spring init
- 云计算示范项目_“云计算和大数据”重点专项2018年度项目申报指南
- Packet Tracer官网下载
- 计算经纬度距离工具类
- Delphi IdHTTP1下载文件防止假死 ( - 大悟还俗
- 全网史上最全的AR学习开发资源汇总(转载他人整理作品,供参考)
- OpenGL-坐标系统,进入3D世界(深度测试)
- 自然辩证法问题思考范围(开卷可用)
- 2018版苹果开发者设置内购(App内购买项目)、税务、银行问题,开通苹果支付
- Mule ESB开发与学习
热门文章
- hadoop的Map阶段的四大步骤
- nio框架中的多个Selector结构
- 创建 floating IP - 每天5分钟玩转 OpenStack(106)
- highcharts第一篇---简介和使用
- Windows Mobile 编程 (Win32) - 获取设备能力
- tf.layers.dropout
- The selected server is enabled,but is not configured pro
- ping 不通 华为三层交换机vlan_华为三层交换机如何让VLAN间不能互通配置精编版...
- 嵌入式开发有年龄限制吗_什么?!考教资有年龄限制了?2020年我还能考吗?...
- 产品经理需要懂技术吗?懂到什么程度?