【BZOJ-3195】奇怪的道路 状压DP (好题!)
3195: [Jxoi2012]奇怪的道路
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 305 Solved: 184
[Submit][Status][Discuss]
Description
小宇从历史书上了解到一个古老的文明。这个文明在各个方面高度发达,交通方面也不例外。考古学家已经知道,这个文明在全盛时期有n座城市,编号为1..n。m条道路连接在这些城市之间,每条道路将两个城市连接起来,使得两地的居民可以方便地来往。一对城市之间可能存在多条道路。
据史料记载,这个文明的交通网络满足两个奇怪的特征。首先,这个文明崇拜数字K,所以对于任何一条道路,设它连接的两个城市分别为u和v,则必定满足1 <=|u - v| <= K。此外,任何一个城市都与恰好偶数条道路相连(0也被认为是偶数)。不过,由于时间过于久远,具体的交通网络我们已经无法得知了。小宇很好奇这n个城市之间究竟有多少种可能的连接方法,于是她向你求助。
方法数可能很大,你只需要输出方法数模1000000007后的结果。
Input
输入共一行,为3个整数n,m,K。
Output
输出1个整数,表示方案数模1000000007后的结果。
Sample Input
3 4 1
【输入样例2】
4 3 3
Sample Output
3
【输出样例2】
4
【数据规模】
HINT
100%的数据满足1<= n <= 30, 0 <= m <= 30, 1 <= K <= 8.
【题目说明】
两种可能的连接方法不同当且仅当存在一对城市,它们间的道路数在两种方法中不同。
在交通网络中,有可能存在两个城市无法互相到达。
Source
Solution
这是一道好题!
这个数据范围显然是可以状压的,但是有需要一些技巧。
设$f[i][j][k][l]$表示到第$i$号城市,连了$j+1$条边,当前$i-K$的城市的度数状态为$k$,准备练第$i$号城市到$i-K+l$号城市的方案数。
考虑转移$$f[i][j][k][l]+=\begin{Bmatrix}f[i][j][k][l+1]\\ f[i][j+1][kXOR(1<<K)XOR(1<<l)][l]\\ \end{Bmatrix}$$
第一种转移是不连边,第二种是连边的转移。
最后答案是$f[N+1][M][0][0]$
细节特别特别多!!! 要看代码好好思考!!!
Code
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
#define P 1000000007
int N,M,K,bin[],f[][][][];
int main()
{
bin[]=; for (int i=; i<=; i++) bin[i]=bin[i-]<<;
scanf("%d%d%d",&N,&M,&K);
f[][][][]=;
for (int i=; i<=N; i++)
for (int j=; j<=M; j++)
for (int k=; k<bin[K+]; k++)
{
for (int l=; l<K; l++)
if (f[i][j][k][l])
{
(f[i][j][k][l+]+=f[i][j][k][l])%=P;
if (i-K+l> && j<M) (f[i][j+][k^bin[l]^bin[K]][l]+=f[i][j][k][l])%=P;
}
if (!(k&) && f[i][j][k][K]) f[i+][j][k>>][]=f[i][j][k][K];
}
printf("%d\n",f[N+][M][][]);
return ;
}
【BZOJ-3195】奇怪的道路 状压DP (好题!)的更多相关文章
- bzoj 3195 奇怪的道路 状压dp
看范围,状压没毛病 但是如果随便连的话给开1<<16,乘上n,m就爆了 所以规定转移时只向回连边 于是想状态数组:f[i][j]表示到i这里i前K位的状态为j(表示奇偶) 发现有条数限制, ...
- BZOJ 3195 [Jxoi2012]奇怪的道路 | 状压DP
传送门 BZOJ 3195 题解 这是一道画风正常的状压DP题. 可以想到,\(dp[i][j][k]\)表示到第\(i\)个点.已经连了\(j\)条边,当前\([i - K, i]\)区间内的点的度 ...
- 【BZOJ3195】[Jxoi2012]奇怪的道路 状压DP
[BZOJ3195][Jxoi2012]奇怪的道路 Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有n座 ...
- 奇怪的道路——状压DP
题目描述 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外. 考古学家已经知道,这个文明在全盛时期有n座城市,编号为1..n.m条道路连接在这些城市之间,每条道路将两个 ...
- bzoj3195 [Jxoi2012]奇怪的道路——状压DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3195 看到数据范围就应该想到状压呢... 题解(原来是这样):https://www.cnb ...
- 【bzoj3195】【 [Jxoi2012]奇怪的道路】另类压缩的状压dp好题
(上不了p站我要死了) 啊啊,其实想清楚了还是挺简单的. Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期 ...
- bzoj 3195 奇怪的道路
Written with StackEdit. Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有\(n\ ...
- BZOJ.4145.[AMPPZ2014]The Prices(状压DP)
BZOJ 比较裸的状压DP. 刚开始写麻烦惹... \(f[i][s]\)表示考虑了前\(i\)家商店,所买物品状态为\(s\)的最小花费. 可以写求一遍一定去\(i\)商店的\(f[i]\)(\(f ...
- BZOJ.3058.四叶草魔杖(Kruskal 状压DP)
题目链接 \(2^{16}=65536\),可以想到状压DP.但是又有\(\sum A_i\neq 0\)的问题.. 但是\(2^n\)这么小,完全可以枚举所有子集找到\(\sum A_i=0\)的, ...
随机推荐
- 使用putty与SSHSecureShellClient登录远程服务器完成与本地Git项目的同步
使用软件远程登录管理服务器 今天给大家介绍两款远程登录管理服务器的软件(Putty和SSHSecureShellClient),这两款也是我在工作中经常的软件. 使用 PuTTY 远程登录管理服务器 ...
- TortoiseSVN与VisualSVN Server搭建SVN版本控制系统
本片主要介绍如何搭建SVN版本控制系统,主要使用工具: 1 客户端:TortoiseSVN (小乌龟) 2 服务端:VisualSVN Server 搭建出图形化管理,以及右键菜单版本控制管理的SVN ...
- Meet Sccot Guthrie in Shanghai
9月16日,有幸和其他9位MVP一起在上海和微软全球副总裁Sccot Guthrie.开发工具部门Somasegar.微软中国申元庆见面,聊关于Azure和开发方面的话题.同时,由于本人目前对物联网( ...
- 人工智能与3A
我在Tid2014上的一个小视频: 下一代的码农会是什么样的呢?且听咕咚老王的“3A”畅谈——“Ai.Art.Any”. 在艺术的视角下,世界是沉寂的.美丽的: 在码农的眼中,世界是有“码”的朦胧美吗 ...
- ORA-00600: internal error code, arguments: [LibraryCacheNotEmptyOnClose]
案例环境: 操作系统版本: Red Hat Enterprise Linux ES release 4 数据库版本 : 10.2.0.4.0 32 bit 案例介绍: 今天我执行stop_ora ...
- Vmware扩展磁盘如何不需重启系统
在虚拟机Vmware中我们有时候需要添加新的虚拟磁盘或给已有虚拟磁盘扩容(expand),在新增磁盘或磁盘扩容后,Linux系统并不能马上识别到.也就是说你看不到磁盘空间变化(使用fdisk -l查看 ...
- DPA/Ignite由于DNS问题导致连接不上被监控的数据库服务器
问题描述: 在DPA(Ignite)的管理监控界面发现有两台SQL Server数据库服务器连接不上,截图如下所示,检查其日志内容 具体错误日志如下所示, Notice:日志里面具体的服务器名称被我用 ...
- Hadoop 之 MapReduce 框架演变详解
经典版的MapReduce 所谓的经典版本的MapReduce框架,也是Hadoop第一版成熟的商用框架,简单易用是它的特点,来看一幅图架构图: 上面的这幅图我们暂且可以称谓Hadoop的V1.0版本 ...
- iOS 10 的坑:新机首次安装 app,请求网络权限“是否允许使用数据”(转)
症状 iOS 10 之后,陆陆续续地有用户联系我们,说新机第一次安装.第一次启动的时候,app 首屏一片空白,完全没数据.kill 掉重新打开就好了. 一开始以为是用户网络情况不好,但随着越来越多的用 ...
- linux下的一些操作(持续更新)
文件操作 创建文件夹: mkdir 文件夹名称 查看当前目录的文件夹及文件:ls 参看当前文件夹下的所有文件及信息: ls -l 删除空文件夹:rmdir 文件夹名称 删除非空文件夹:rm rf 文件 ...