状压[Jxoi2012]奇怪的道路
小宇从历史书上了解到一个古老的文明。这个文明在各个方面高度发达,交通方面也不例外。考古学家已经知道,这个文明在全盛时期有n座城市,编号为1…n。m条道路连接在这些城市之间,每条道路将两个城市连接起来,使得两地的居民可以方便地来往。一对城市之间可能存在多条道路。
据史料记载,这个文明的交通网络满足两个奇怪的特征。首先,这个文明崇拜数字K,所以对于任何一条道路,设它连接的两个城市分别为u和v,则必定满足1 <=|u - v| <= K。此外,任何一个城市都与恰好偶数条道路相连(0也被认为是偶数)。不过,由于时间过于久远,具体的交通网络我们已经无法得知了。小宇很好奇这n个城市之间究竟有多少种可能的连接方法,于是她向你求助。
方法数可能很大,你只需要输出方法数模1000000007后的结果。
观察到K较小可以状态压缩
而且状态也好定义:Fi,j,kF_{i,j,k}Fi,j,k前iii个城市用了jjj条边当前K+1K+1K+1条边奇偶性情况。
但是发现不好补表,因为你要计算前缀和关系,考虑刷表法用当前状态更新后来状态
但是注意算重问题:
即你要枚举连向哪一条边,这本质是让统计有序
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long LL;
LL mod=1000000007;
LL F[32][32][(1<<9)];
int n,m,k;
int main(){cin>>n>>m>>k;F[1][0][0]=1;for(int i=1;i<=n;++i){for(int l=max(1,i-k);l<i;++l){for(int j=0;j<=m;++j){for(int S=0;S<=min((1<<(k+1))-1,(1<<i)-1);++S){int T=S^(1<<(i-l))^1;F[i][j+1][T]=(F[i][j][S]+F[i][j+1][T])%mod;}} }for(int j=0;j<=m;++j){for(int S=0;S<=min((1<<(k+1))-1,(1<<i)-1);++S){if(S&(1<<k)){continue;}F[i+1][j][(S<<1)%(1<<(k+1))]=(F[i+1][j][(S<<1)%(1<<(k+1))]+F[i][j][S])%mod;}}}cout<<F[n][m][0];return 0;
}
转载于:https://www.cnblogs.com/Leo-JAM/p/10079057.html
状压[Jxoi2012]奇怪的道路相关推荐
- bzoj3195 [Jxoi2012]奇怪的道路——状压DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3195 看到数据范围就应该想到状压呢... 题解(原来是这样):https://www.cnb ...
- bzoj3195 [Jxoi2012]奇怪的道路
Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有 \(n\) 座城市,编号为 \(1\cdots n\) ...
- BZOJ 3195: [Jxoi2012]奇怪的道路 | 状压DP
不是我吹牛逼 想了1min就想出来的题真是 超水的 题太简单了 解释就不解释了 #include<cstdio> #define P 1000000007 using namespace ...
- 状压dp个人刷题记录
目录 一.普通型 蒙德里安的梦想 题意: 思路: code: #2153. 「SCOI2005」互不侵犯 题意: 思路: code: P1879 [USACO06NOV]Corn Fields G 题 ...
- 道路覆盖 (二分答案+状压DP)
Description: Tar 把一段凹凸不平的路分成了高度不同的 N 段(每一段相同高度),并用 H[i] 表示第 i 段高度.现在 Tar 一共有 n 种泥土可用,它们都能覆盖给定的连续的 k ...
- bzoj 3195 奇怪的道路
Written with StackEdit. Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有\(n\ ...
- 【Gym - 101915D】Largest Group(二分图最大团,状压dp)
题干: 大黑山上有小小民和小小涛两种物种,山东人小李想要研究这两种物种的关系 奇怪的是大黑山上有相同数量的小小民和小小涛.小李数了数一共有 P 个,小李分别给P个小小民和小小涛编号 1 - P 号,已 ...
- HDU 3001 三进制状压DP
HDU 3001 三进制状压DP N个城市,M条道路,每条道路有其经过的代价,每一个城市最多能够到达两次,求走全然部城市最小代价,起点随意. 三进制状压.存储每一个状态下每一个城市经过的次数. 转移方 ...
- 2017.7.26 奇怪的道路 失败总结
做不出来主要是老想着用2^30存每个点的状态,用0 1表示连边奇偶,,就被限制住了 实际上我们应该注意到k=8,这样我们就只用记录前k个.. 其实就是递推的思路,每次加入一个新点,枚举这个点与前K个点 ...
最新文章
- Jittor 的Op, Var算子
- MyEclipse优化---编程时更流畅
- Delphi的“Invalid pointer operation“异常的解决办法
- 力控批量添加变量_力控变量.ppt
- 在centos 6.5下安装svn (Subversion)
- “MySQL 服务正在启动 . MySQL 服务无法启动。 服务没有报告任何错误。”的解决方案
- ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
- 清华源加速 添加在pip install xxx后面即可
- 玩转诺基亚5800XM,新手上路指南
- 工具 - 文本比较/对比 - 收集
- 黑芝麻A1000 设置临时IP连接激光雷达(十)
- JSCORE03(达)
- ubuntu 18.04 安装NFS 共享文件夹,Linux挂载,Mac 挂载
- jpg转bmpbmp转jpg
- 笔记本触摸板没反应怎么回事?笔记本触控板失灵解决办法
- 百度数据实习生面试经历—2019.4.15
- 音乐相册(程序员表白必备,或者生日礼物)(小白学习向)
- 游戏服务器架构设计的一些整理
- Android七大布局的介绍
- Linux使用gpu渲染桌面,Firefox Nightly新版已经支持GPU网页渲染,Linux等全平台可用...