奇怪的道路

我看不出来是状压的状压

好吧,其实看到k的范围应该去往状压方面想的。

然后,题目中说“任何一个城市都与恰好偶数条道路相连(0也被认为是偶数)”。

所以,奇偶,两种状态可以用0,1来表示,那就妥妥的状压了。

设 \(dp_{i,j,sta}\) 表示当前已经考虑了i座城市,j条道路,当前状态为sta的方案数。

用0表示奇数,1表示偶数,为了防止转移时出现问题,所以只转移第i个城市的前k个城市,通过异或能够将连边的两个城市由奇变偶,由偶变奇。

则有

\[dp_{i,j,sta}=\sum_{l=i-k}^{i-1}\sum_{sta=0}^{2^{k+1}-1}dp_{i,j-1,sta^{\wedge}1^{\wedge}2^{i-1}}
\]

因为在转移的时候,sta表示的范围在发生变化,所以对于每一个i都要再单独处理一下

\[dp_{i+1,j,sta\times 2}=\sum_{j=0}^{m}\sum_{sta=0}^{2^{k}-1}dp_{i,j,sta}
\]

Code:

#include<cstdio>
#define top 10
#define MAX 32
#define re register
namespace OMA
{
int n,m,k;
int dp[MAX][MAX][1<<top];
const int p=1000000007;
inline int max(int a,int b)
{ return a>b?a:b; }
signed main()
{
scanf("%d%d%d",&n,&m,&k);
dp[2][0][0] = 1;
for(re int i=2; i<=n; i++)
{
for(re int l=max(i-k,1); l<=i-1; l++)
{
for(re int j=1; j<=m; j++)
{
for(re int temp=0; temp<(1<<k+1); temp++)
{ dp[i][j][temp] = (dp[i][j][temp]+dp[i][j-1][temp^1^(1<<(i-l))])%p; }
}
}
for(re int j=0; j<=m; j++)
{
for(re int temp=0; temp<(1<<k); temp++)
{ dp[i+1][j][temp<<1] = (dp[i][j][temp]+dp[i+1][j][temp<<1])%p; }
}
}
printf("%d\n",dp[n][m][0]);
return 0;
}
}
signed main()
{ return OMA::main(); }

luogu P6239 奇怪的道路的更多相关文章

  1. 【BZOJ-3195】奇怪的道路 状压DP (好题!)

    3195: [Jxoi2012]奇怪的道路 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 305  Solved: 184[Submit][Statu ...

  2. [补档][Jxoi2012] 奇怪的道路

    [Jxoi2012] 奇怪的道路 题目 传送门 :http://www.lydsy.com/JudgeOnline/problem.php?id=3195 小宇从历史书上了解到一个古老的文明.这个文明 ...

  3. bzoj 3195 [Jxoi2012]奇怪的道路

    3195: [Jxoi2012]奇怪的道路 Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有n座城市,编 ...

  4. 【BZOJ】3195: [Jxoi2012]奇怪的道路【状压/奇偶性】【思路】

    3195: [Jxoi2012]奇怪的道路 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 802  Solved: 529[Submit][Statu ...

  5. [BZOJ3195][Jxoi2012]奇怪的道路

    3195: [Jxoi2012]奇怪的道路 Time Limit: 10 Sec  Memory Limit: 128 MB Description 小宇从历史书上了解到一个古老的文明.这个文明在各个 ...

  6. 【BZOJ3195】[Jxoi2012]奇怪的道路 状压DP

    [BZOJ3195][Jxoi2012]奇怪的道路 Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有n座 ...

  7. 3195: [Jxoi2012]奇怪的道路

    3195: [Jxoi2012]奇怪的道路 链接 思路: 因为一个点只会和它前后k个点连边,所以,记录下每个点的前k个点和它自己(共k+1个点)的状态,1表示奇数,0表示偶数. dp[i][j][s] ...

  8. luogu P1462 通往奥格瑞玛的道路--spfa+二分答案

    P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...

  9. [Luogu P1462] 通往奥格瑞玛的道路 (二分答案+最短路径)

    题面 传送门:https://www.luogu.org/problemnew/show/P1462 Solution 这道题如果去除掉经过城市的收费.那么就是裸的最短路 但是题目要求经过城市中最多的 ...

随机推荐

  1. HADOOP及SPARK安装步骤及问题解决

    说明:主节点IP:192.168.35.134   主机名:master 从节点slave1 IP: 192.168.35.135   主机名:slave1 从节点slave2 IP: 192.168 ...

  2. XCTF csaw2013reversing2

    题目描述:听说运行就能拿到Flag,不过菜鸡运行的结果不知道为什么是乱码 一.先运行看看. 果然乱码. 二.查壳 三.是pe文件,可以拖入od和ida进行动态和静态分析. 1.对主函数进行反编译一下. ...

  3. VisibleDeprecationWarning , Creating an ndarray from ragged nested sequences... 警告怎么办

    我不是完美主义,但是至少,我在做实验的时候不能容忍有 warning 的出现. 今天使用 tensorflow.keras.datasets中的 imdb 数据集,使用 imdb.load_data( ...

  4. DWA局部路径规划算法论文阅读:The Dynamic Window Approach to Collision Avoidance。

    DWA(动态窗口)算法是用于局部路径规划的算法,已经在ROS中实现,在move_base堆栈中:http://wiki.ros.org/dwa_local_planner DWA算法第一次提出应该是1 ...

  5. 答读者问(1):非模式物种找marker;如何根据marker定义细胞类型

    下午花了两个小时回答读者的疑问,觉得可以记录下来,也许能帮到一部分人. 第一位读者做的是非模式物种的单细胞. 一开始以为是想问我非模式物种的marker基因在哪儿找,读者朋友也提到了blast 研究的 ...

  6. Easyui动态添加控件无法渲染 $.parser.parse()无效

    本文链接:https://blog.csdn.net/huangbaokang/article/details/78367553动态添加easyui控件<input class="ea ...

  7. SpringBoot中时间格式化的5种方法!

    在我们日常工作中,时间格式化是一件经常遇到的事儿,所以本文我们就来盘点一下 Spring Boot 中时间格式化的几种方法. ​ 时间问题演示 为了方便演示,我写了一个简单 Spring Boot 项 ...

  8. P2015

    二叉苹果树 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include< ...

  9. vulnhub-DC:2靶机渗透记录

    准备工作 在vulnhub官网下载DC:1靶机https://www.vulnhub.com/entry/dc-2,311/ 导入到vmware 打开kali准备进行渗透(ip:192.168.200 ...

  10. PowerProto: gRPC工具链(protoc, protoc-gen-go)的一键安装与版本控制

    ‍PowerProto: gRPC工具链(protoc, protoc-gen-go)的一键安装与版本控制 中文 | English 项目地址:An awesome version control t ...