决定在这个小巷里排兵布阵.小巷可以抽象成一个
们彼此之间并不是十分和♂谐.具体来说,一个哲学家会有一个
的矩形.每一位哲学家会占据一个格子.然而哲学家
的01矩阵来表示他自己的守备范围.
哲学家自己位于这个矩阵的(2,2)位置.具体的说,如果一个哲学家的守备矩阵是:
那么他的前后左右都不能有哲学家存在.
方案,答案对
手下有 位哲学家.他需要你帮他求出有多少种排列这些哲学家的
取模.
定义两种排列方案不同,当且仅当存在一个位置在一种方案里面这个位置有哲学家,另一个位置没有.保证这个守
备矩阵的第二行第二列一定是1.
Data Range
对于前 的数据,满足
对于前 的数据,满足
另有
的数据,给出的守备矩阵只有第二行第二列为1
对于
的数据,
Sample Input I
3 2
0 1 0
0 1 1
1 0 0
Sample Output I
20

 #include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#define RG register
using namespace std;
typedef long long ll;
const int N=,mod=;
ll f[][N*][<<];
int n,m,num=,lim[][],a[<<+];
int ct[][],s[];
bool check(int x){
if((lim[][] || lim[][]) && (x&(x<<)))return false;
return true;
}
int getit(int x){
int ret=;
while(x){
ret++;
x-=(x&(-x));
}
return ret;
}
int w[<<];
bool ok(int x,int y){
if((lim[][] && ((x<<)&y)) || (lim[][] && ((y<<)&x)))return false;
if((lim[][] && ((y<<)&x)) || (lim[][] && ((x<<)&y)))return false;
if((lim[][] || lim[][]) && (x&y))return false;
return true;
}
void work(){
scanf("%d%d",&n,&m);
for(int i=;i<=;i++)
for(int j=;j<=;j++){
scanf("%d",&lim[i][j]);
}
int cnt=(<<)-;
for(int i=;i<=cnt;i++)w[i]=getit(i);
for(int i=;i<=cnt;i++){
if(check(i))a[++num]=i,f[][w[i]][num]=;
}
for(int i=;i<=num;i++)
for(int j=;j<=num;j++)if(ok(a[i],a[j]))ct[i][++s[i]]=j;
int c=,co=,p;
for(RG int i=;i<=n;i++){
for(RG int k=;k<=m;k++)
for(RG int j=;j<=num;j++){
f[co][k][j]=;
p=k-w[a[j]];
if(k>=w[a[j]])
for(RG int g=;g<=s[j];g++){
f[co][k][j]+=f[c][p][ct[j][g]],f[co][k][j]%=mod;
}
}
c^=;co^=;
}
ll ans=;
for(int i=;i<=num;i++)ans+=f[c][m][i],ans%=mod;
printf("%lld\n",ans);
}
int main()
{
freopen("final.in","r",stdin);
freopen("final.out","w",stdout);
work();
return ;
}

决战 状压dp的更多相关文章

  1. BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3336  Solved: 1936[Submit][ ...

  2. nefu1109 游戏争霸赛(状压dp)

    题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1109 //我们校赛的一个题,状压dp,还在的人用1表示,被淘汰 ...

  3. poj3311 TSP经典状压dp(Traveling Saleman Problem)

    题目链接:http://poj.org/problem?id=3311 题意:一个人到一些地方送披萨,要求找到一条路径能够遍历每一个城市后返回出发点,并且路径距离最短.最后输出最短距离即可.注意:每一 ...

  4. [NOIP2016]愤怒的小鸟 D2 T3 状压DP

    [NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...

  5. 【BZOJ2073】[POI2004]PRZ 状压DP

    [BZOJ2073][POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍 ...

  6. bzoj3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(spfa+状压DP)

    数据最多14个有宝藏的地方,所以可以想到用状压dp 可以先预处理出每个i到j的路径中最小权值的最大值dis[i][j] 本来想用Floyd写,无奈太弱调不出来..后来改用spfa 然后进行dp,这基本 ...

  7. HDU 1074 Doing Homework (状压dp)

    题意:给你N(<=15)个作业,每个作业有最晚提交时间与需要做的时间,每次只能做一个作业,每个作业超出最晚提交时间一天扣一分 求出扣的最小分数,并输出做作业的顺序.如果有多个最小分数一样的话,则 ...

  8. 【BZOJ1688】[Usaco2005 Open]Disease Manangement 疾病管理 状压DP

    [BZOJ1688][Usaco2005 Open]Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) ...

  9. 【BZOJ1725】[Usaco2006 Nov]Corn Fields牧场的安排 状压DP

    [BZOJ1725][Usaco2006 Nov]Corn Fields牧场的安排 Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M< ...

随机推荐

  1. R语言-推荐系统

    一.概述 目的:使用推荐系统可以给用户推荐更好的商品和服务,使得产品的利润更高 算法:协同过滤 协同过滤是推荐系统最常见的算法之一,算法适用用户过去的购买记录和偏好进行推荐 基于商品的协同过滤(IBC ...

  2. requestAnimationFrame Web中写动画的另一种选择

    HTML5和CSS3盛行的今天  动画变得很简单实现 我们可以用transition . animation + keyframe .也可以用canvas等 我在上一篇 点击回到顶部的文章中发现的这个 ...

  3. Ubuntu命令行连接WPA/WPA2无线网线

    一,连接无加密无线网络zhang:sudo ip link set wlan0 up sudo iw dev wlan0 connect zhangsudo dhclient wlan0 二,连接WP ...

  4. 延迟确认和Nagle算法

    前篇文章介绍了三次握手和四次挥手,了解了TCP是如何建立和断开连接的,文末还提到了抓包挥手时的一个“异常”现象,当时无法解释,特地查了资料,知道了数据传输中的延迟确认策略. 何谓延迟确认策略? WIK ...

  5. ( 转 ) 聊一聊C#的Equals()和GetHashCode()方法

    聊一聊C#的Equals()和GetHashCode()方法   博客创建一年多,还是第一次写博文,有什么不对的地方还请多多指教. 关于这次写的内容可以说是老生长谈,百度一搜一大堆.大神可自行绕路. ...

  6. AutoCAD中的扩展字典及扩展记录(C#)

    在学习CAD扩展记录的过程中,遇到了一些问题,也积累了一些经验,现在给大家分享一些我的学习心得.在学习扩展字典之前需要读者了解cad的组码,也就是DxfCode.感兴趣的也可以了解一下扩展数据的相关内 ...

  7. jscript定时器,一直用的东西,你真的明白吗?

    JavaScript定时器 JavaScript是一种解释型语言(边编译边执行),Js解析顺序是从上到下,然后将编译后的任务丢到一个事件队列中,然后事件内的函数会从上到下开始执行 setInterva ...

  8. 工作笔记 | Visual Studio 调用 Web Service

    引言 最近笔者负责ERP财务系统跟中粮集团财务公司的财务系统做对接,鉴于ERP系统中应付结算单结算量比较大,而且管理相对集中,ERP系统与中粮财务公司的支付平台系统对接,实现银企直联,将网银录入的环节 ...

  9. ArUco----一个微型现实增强库的介绍及视觉应用(一)

    ArUco----一个微型现实增强库的介绍及视觉应用(一) 一.ArUco简介 ArUco是一个开源的微型的现实增强库,目前好像已经集成在OpenCV3.0以上的版本内了,它除了用于现实增强,还很用于 ...

  10. POJ-2253 Frogger---最短路变形&&最大边的最小值

    题目链接: https://vjudge.net/problem/POJ-2253 题目大意: 青蛙A想访问青蛙B,必须跳着石头过去,不幸的是,B所在的石头太远了,需要借助其他的石头,求从A到B的路径 ...