UESTC_冬马党 CDOJ 882
冬马党
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
终于到了冬马党与雪菜党决战的时候了,为了方便,他们的决战之地可看成一个n×m矩阵。
决战前夜,冬马党安插在雪菜党中的内线告诉白学家Kuros
,雪菜党已经在他们的决战之地埋下了地雷。
白学家Kuros
根据多年来扫雷的经验,推测出雪菜党一定不会在相邻的格子里都放地雷。(两个格子相邻指它们共享一条边)并且,根据先遣部队的探查,某些格子的土地非常坚硬,是不可能埋地雷的。
为了冬马党最终的胜利,Kuros
想知道,雪菜党总共有多少种方案来放地雷。
Input
输入第一行为两个整数n,m,表示决战之地的大小。(1≤n≤12,1≤m≤12)
接下来n行,每行m个数,0表示该土地不能放地雷,1表示该土地可以埋地雷。
Output
一行,一个整数,表示总的方案数,答案取100000000的余数。
Sample input and output
Sample Input | Sample Output |
---|---|
|
|
Source
- #include <iostream>
- #include <cstring>
- #include <cstdio>
- #include <algorithm>
- typedef long long ll;
- using namespace std;
- const ll mod = ;
- ll f[][ << ];
- bool g[][];
- int n,m,r,cur=;
- void dfs(int pos,int val,ll add)
- {
- if (pos == -)
- f[cur][val] = (f[cur][val] + add) % mod;
- else
- {
- if (val >> pos & || !g[r][pos]) //上一行的这个位置已经放了地雷 / 这个地方不允许放地雷
- dfs(pos-,val & ~( << pos),add);
- else
- {
- dfs(pos-,val | ( << pos),add);
- dfs(pos-,val,add);
- }
- }
- }
- bool check(int x)
- {
- int pre = ;
- for(int i = ; i < m ; ++ i)
- {
- int newx = x >> i & ;
- if (newx && pre)
- return false;
- pre = newx;
- }
- return true;
- }
- int main(int argc,char *argv[])
- {
- memset(g,true,sizeof(g));
- memset(f,,sizeof(f));
- scanf("%d%d",&n,&m);
- for(int i = ; i < n ; ++ i)
- for(int j = ; j < m ; ++ j)
- {
- int temp;
- scanf("%d",&temp);
- if (!temp)
- g[i][j] = false;
- }
- r = ;
- dfs(m-, , );
- for(int i = ; i < n ; ++ i)
- {
- cur ^= ;
- r = i;
- for(int j = ; j < ( << m) ; ++ j) f[cur][j] = ;
- for(int j = ; j < ( << m) ; ++ j)
- if (check(j))
- dfs(m-,j,f[cur^][j]);
- }
- int ans = ;
- for(int i = ; i < ( << m) ; ++ i)
- if (check(i))
- ans = (ans + f[cur][i]) % mod;
- printf("%lld\n",ans % mod);
- return ;
- }
UESTC_冬马党 CDOJ 882的更多相关文章
- UESTC 882 冬马党 --状压DP
定义:dp[i][j]为状态为j时,第i行符合条件的状态数 转移方程:dp[i][j] += dp[i-1][t] //t为上一行状态,与当前行不冲突. 从第一行开始向下枚举,每次枚举当前行的状态 ...
- UESTC_神秘绑架案 CDOJ 881
神秘绑架案 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...
- UESTC_方老师买表 CDOJ 885
老师买表 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Stat ...
- 2014 UESTC暑前集训动态规划专题解题报告
A.爱管闲事 http://www.cnblogs.com/whatbeg/p/3762733.html B.轻音乐同好会 C.温泉旅馆 http://www.cnblogs.com/whatbeg/ ...
- Codeforces 433A (背包)
题面 传送门 真是令人胃疼的题面 我不管,我要把苹果都给雪菜!(滑稽)(冬马党不要打我) 分析 突然感觉这题跟今年NOIP Day1T2有点像,都是根据数加减来构造背包,只不过这题是01背包而不是完全 ...
- 学习进度04(billbill长评数据提取01)
学习了python写入csv文件自己想了一个小实战,爬取billbill<白色相簿>番剧的长评 网页是动态变化的,往下拉他才会更新出长评,找出关键链接https://api.bilibil ...
- UESTC_温泉旅店 CDOJ 878
天空飘下一朵一朵的雪花,这是一片纯白的世界. 在天空之下的温泉旅店里,雪菜已醉倒在一旁,冬马与春希看了看说着梦话的雪菜,决定找一点玩的来度过这愉快的晚上. 这家旅店提供一种特色游戏,游戏有n张牌,各写 ...
- UESTC_摩天轮 2015 UESTC Training for Dynamic Programming<Problem K>
K - 摩天轮 Time Limit: 10000/4000MS (Java/Others) Memory Limit: 262143/262143KB (Java/Others) Submi ...
- 【BZOJ-2892&1171】强袭作战&大sz的游戏 权值线段树+单调队列+标记永久化+DP
2892: 强袭作战 Time Limit: 50 Sec Memory Limit: 512 MBSubmit: 45 Solved: 30[Submit][Status][Discuss] D ...
随机推荐
- 多系统实现单点登录方案:SSO 单点登录
一.什么是单点登录SSO(Single Sign-On) SSO是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用 ...
- poj 3262 Protecting the Flowers 贪心
题意:给定n个奶牛,FJ把奶牛i从其位置送回牛棚并回到草坪要花费2*t[i]时间,同时留在草地上的奶牛j每分钟会消耗d[j]个草 求把所有奶牛送回牛棚内,所消耗草的最小值 思路:贪心,假设奶牛a和奶牛 ...
- Linux系统启动流程及grub重建(1)
日志系统 Linux系统启动流程 PC: OS(Linux) POST-->BIOS(Boot Sequence)-->MBR(bootloader,446)-->Kernel--& ...
- 【转】基于Qt, TUIO和TSLIB的嵌入式Linux下的多点触摸设计
这个教程描述了在嵌入式linux下使用Qt如何设置一个支持多点触摸和单点触摸的输入系统.这里假定你已经有了对应的驱动程序,驱动可以从触摸屏的厂商那里获得或者使用一个linux 内核源码中已经存在的驱动 ...
- pyqt QTableView例子学习
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.QtGui import * from Py ...
- web前端之 CSS
CSS概述 CSS 指层叠样式表 (Cascading Style Sheets),说白了就是给html代码穿上好看的衣服,让页面变得好看 CSS存在形式 1.在标签的属性中设置,优先级较高 代码如下 ...
- redis简单配置
由于前段时间使用Kestrel,同时要操作Memcached及时更新缓存,又要操作database,持久化数据. 貌似Redis既可以当Cache又可以当Queue!于是,今天开始研究Redis! 一 ...
- android recover 系统代码分析 -- 选择进入
最近做Recovery的规范及操作指导文档,花了一些时间将流程搞清. Android利用Recovery模式,进行恢复出厂设置,OTA升级,patch升级及firmware升级.而在进入Recover ...
- Coreseek:常见的问题2
1.failed to lock XXXXX.spl档 这是当你构建的指数将是一个问题,您不必打开searchd服务关闭,既然你开searchd维修,他将建立呼叫xxx.spl临时文件,施工时的指数会 ...
- VS2012 拆分视图按钮不见,代码,设计
工具--选项--HTML设计器 然后重启就有了.