小宇从历史书上了解到一个古老的文明。这个文明在各个方面高度发达,交通方面也不例外。考古学家已经知道,这个文明在全盛时期有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]奇怪的道路相关推荐

  1. bzoj3195 [Jxoi2012]奇怪的道路——状压DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3195 看到数据范围就应该想到状压呢... 题解(原来是这样):https://www.cnb ...

  2. bzoj3195 [Jxoi2012]奇怪的道路

    Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有 \(n\) 座城市,编号为 \(1\cdots n\) ...

  3. BZOJ 3195: [Jxoi2012]奇怪的道路 | 状压DP

    不是我吹牛逼 想了1min就想出来的题真是 超水的 题太简单了 解释就不解释了 #include<cstdio> #define P 1000000007 using namespace ...

  4. 状压dp个人刷题记录

    目录 一.普通型 蒙德里安的梦想 题意: 思路: code: #2153. 「SCOI2005」互不侵犯 题意: 思路: code: P1879 [USACO06NOV]Corn Fields G 题 ...

  5. 道路覆盖 (二分答案+状压DP)

    Description: Tar 把一段凹凸不平的路分成了高度不同的 N 段(每一段相同高度),并用 H[i] 表示第 i 段高度.现在 Tar 一共有 n 种泥土可用,它们都能覆盖给定的连续的 k ...

  6. bzoj 3195 奇怪的道路

    Written with StackEdit. Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有\(n\ ...

  7. 【Gym - 101915D】Largest Group(二分图最大团,状压dp)

    题干: 大黑山上有小小民和小小涛两种物种,山东人小李想要研究这两种物种的关系 奇怪的是大黑山上有相同数量的小小民和小小涛.小李数了数一共有 P 个,小李分别给P个小小民和小小涛编号 1 - P 号,已 ...

  8. HDU 3001 三进制状压DP

    HDU 3001 三进制状压DP N个城市,M条道路,每条道路有其经过的代价,每一个城市最多能够到达两次,求走全然部城市最小代价,起点随意. 三进制状压.存储每一个状态下每一个城市经过的次数. 转移方 ...

  9. 2017.7.26 奇怪的道路 失败总结

    做不出来主要是老想着用2^30存每个点的状态,用0 1表示连边奇偶,,就被限制住了 实际上我们应该注意到k=8,这样我们就只用记录前k个.. 其实就是递推的思路,每次加入一个新点,枚举这个点与前K个点 ...

最新文章

  1. Jittor 的Op, Var算子
  2. MyEclipse优化---编程时更流畅
  3. Delphi的“Invalid pointer operation“异常的解决办法
  4. 力控批量添加变量_力控变量.ppt
  5. 在centos 6.5下安装svn (Subversion)
  6. “MySQL 服务正在启动 . MySQL 服务无法启动。 服务没有报告任何错误。”的解决方案
  7. ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
  8. 清华源加速 添加在pip install xxx后面即可
  9. 玩转诺基亚5800XM,新手上路指南
  10. 工具 - 文本比较/对比 - 收集
  11. 黑芝麻A1000 设置临时IP连接激光雷达(十)
  12. JSCORE03(达)
  13. ubuntu 18.04 安装NFS 共享文件夹,Linux挂载,Mac 挂载
  14. jpg转bmpbmp转jpg
  15. 笔记本触摸板没反应怎么回事?笔记本触控板失灵解决办法
  16. 百度数据实习生面试经历—2019.4.15
  17. 音乐相册(程序员表白必备,或者生日礼物)(小白学习向)
  18. 游戏服务器架构设计的一些整理
  19. Android七大布局的介绍
  20. Linux使用gpu渲染桌面,Firefox Nightly新版已经支持GPU网页渲染,Linux等全平台可用...

热门文章

  1. mariadb数据库文件的组成
  2. 分布式文件系统FastDFS设计原理
  3. 关于配置两台无线路由器
  4. eclipse 优化。
  5. 浅谈Android binder原理与设计 (1)
  6. 可以发外链的网站_可以发外链的地方有哪些?-top推
  7. python是动态语言_Python是动态语言:动态添加或删除属性、方法
  8. linux 字符下 上网,Linux下实现字符串截取方法总结(示例代码)
  9. java方法中与参数怎么调用_与Java方法调用中的类型参数有关的问题
  10. 船员英语老师是面试还是计算机答题,面试时的英语介绍