Written with StackEdit.

Description

小宇从历史书上了解到一个古老的文明。这个文明在各个方面高度发达,交通方面也不例外。考古学家已经知道,这个文明在全盛时期有\(n\)座城市,编号为\(1..n\)。\(m\)条道路连接在这些城市之间,每条道路将两个城市连接起来,使得两地的居民可以方便地来往。一对城市之间可能存在多条道路。
据史料记载,这个文明的交通网络满足两个奇怪的特征。首先,这个文明崇拜数字\(K\),所以对于任何一条道路,设它连接的两个城市分别为\(u\)和\(v\),则必定满足\(1 <=|u - v| <= K.\)此外,任何一个城市都与恰好偶数条道路相连(\(0\)也被认为是偶数)。不过,由于时间过于久远,具体的交通网络我们已经无法得知了。小宇很好奇这\(n\)个城市之间究竟有多少种可能的连接方法,于是她向你求助。
方法数可能很大,你只需要输出方法数模\(10^9+7\)后的结果。

Input

输入共一行,为\(3\)个整数\(n,m,K\)。

Output

输出\(1\)个整数,表示方案数模\(10^9+7\)后的结果。

Sample Input

【输入样例1】
3 4 1
【输入样例2】
4 3 3

Sample Output

【输出样例1】
3

【输出样例2】
4

HINT

\(100\%\)的数据满足\(1 <= n <= 30, 0 <= m <= 30, 1 <= K <= 8.\)

两种可能的连接方法不同当且仅当存在一对城市,它们间的道路数在两种方法中不同。
在交通网络中,有可能存在两个城市无法互相到达。

Solution

  • \(K\)的范围较小,考虑设计状态数目与\(K\)有关的状压\(dp\).
  • \(f[i][j][S][l]\)表示考虑到第\(i\)个点,使用了\(j\)条边.
  • \(S\)只用压缩\(i-k\)~\(i\)的度数奇偶性,因为前面的点是无法再被连边的.
  • \(l\)表示当前处理\(i\)向\(i-l\)连边.
  • 那么枚举\(i,j,S,l\),按照状态定义连边或不连边转移.
#include<bits/stdc++.h>
using namespace std;
typedef long long LoveLive;
inline int read()
{int out=0,fh=1;char jp=getchar();while ((jp>'9'||jp<'0')&&jp!='-')jp=getchar();if (jp=='-'){fh=-1;jp=getchar();}while (jp>='0'&&jp<='9'){out=out*10+jp-'0';jp=getchar();}return out*fh;
}
const int P=1e9+7;
inline int add(int a,int b)
{return (a+b) % P;
}
inline int mul(int a,int b)
{return 1LL * a * b % P;
}
const int MAXN=32,MAXK=10;
int n,m,k;
int f[MAXN][MAXN][1<<MAXK][MAXK];
int main()
{n=read(),m=read(),k=read();f[1][0][0][1]=1;for(int i=1;i<=n;++i){for(int j=0;j<=m;++j){for(int s=0;s<(1<<(k+1));++s){for(int l=1;l<=k;++l)//从i向i-l连边.避免重复计数 {int res=f[i][j][s][l];f[i][j][s][l+1]=add(f[i][j][s][l+1],res);//不连边直接转移 if(l<=i-1){int news=s^(1<<k)^(1<<(k-l));f[i][j+1][news][l]=add(f[i][j+1][news][l],res);}}if((s&1)==0)//度数为偶,符合条件,不再考虑 f[i+1][j][s>>1][1]=add(f[i+1][j][s>>1][1],f[i][j][s][k]);}}}printf("%d\n",f[n][m][0][k]);return 0;
}

转载于:https://www.cnblogs.com/jklover/p/10062171.html

bzoj 3195 奇怪的道路相关推荐

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

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

  2. 状压[Jxoi2012]奇怪的道路

    小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有n座城市,编号为1-n.m条道路连接在这些城市之间,每条道路将两个城市连接起来, ...

  3. bzoj3195 [Jxoi2012]奇怪的道路

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

  4. [BZOJ 2756] 奇怪的游戏

    Link:https://www.lydsy.com/JudgeOnline/problem.php?id=2756 Algorithm: 比较新颖的题目 首先发现是对矩阵中相邻两数进行操作    & ...

  5. [BZOJ 2200][Usaco2011 Jan]道路和航线 spfa+SLF优化

    Description Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条 ...

  6. 【bzoj 2435】[Noi2011]道路修建(dfs)

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3505  Solved: 1167 [Submit][Sta ...

  7. bzoj 2756奇怪的游戏

    2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MB Submit: 2571  Solved: 685 [Submit][St ...

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

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

  9. [BZOJ 2500] 幸福的道路

    照例先贴题面(汪汪汪) 2500: 幸福的道路 Time Limit: 20 Sec  Memory Limit: 256 MB Submit: 368  Solved: 145 [Submit][S ...

最新文章

  1. java中volatile_Java中Volatile关键字详解
  2. 工具 - 硕思SWF Decompiler5.3Build528 含补丁
  3. Spring-AOP 混合使用各种切面类型及不同切面总结
  4. Properties文件的XML格式
  5. 对于个人(注册表)与团队(团队表)(两张表没有关联)的展示与可空判断
  6. 关于UML中逻辑模型的工具的详细介绍
  7. 离开北上广的互联网工程师最终都去了哪里?
  8. Top 100 good english words
  9. 零基础学启发式算法(5)-遗传算法 (Genetic Algorithm)
  10. 记:用notepad2替换系统自带记事本notepad
  11. 全15期BIM等级考试解析(内附考试秘籍)
  12. 《自拍教程74》Python 假装企业微信电脑在线并定时关机,骗老板的好方法!
  13. ios ipa分析之 .dSYM 文件、.xcarchive 文件和 Link Map 文件的Mac版本分析工具:MKAppTool
  14. nginx配置多个域名转向80端口
  15. 2022姓氏头像在线制作小程序源码+头像模块
  16. 亲情友情爱情:《悲惨世界》第四部《卜吕梅街的柔情和圣德尼街的史诗》/人性:《悲惨世界》第五部《冉阿让》摘录...
  17. 什么是贪婪型人格?如何改变贪婪的性格?
  18. 社群运营怎么做更有效?
  19. 2021-2022-1 20212820《Linux内核原理与分析》第一周作业
  20. Visual C++游戏编程基础之多背景循环动画

热门文章

  1. swift3.0 Runtime 增加属性
  2. Spring4 学习系列之——jdbc事务的基本实现和了解
  3. mysql 导出select语句结果到excel文件等
  4. linux下调试core的命令
  5. 关于文件透明加密解密
  6. courses to choose
  7. super icon
  8. 论述一个模式的时候的方法
  9. shanghai international trade center
  10. 关于svn不能cleanup的问题