HDU-5965 扫雷 模拟+想法
http://acm.hdu.edu.cn/showproblem.php?pid=5965
(合肥)区域赛签到题。。。orz
题意:3*n的地图上扫雷(规则就是正常扫雷),中间一排全部没有雷,且全部被点掉并显示出数字,问一共有多少种雷的排列情况。
题解:先注意到每列只有两格能放雷,如此一来0,2颗雷都只有一种情况。1颗雷两种可能,即ans*=2.
然后考虑怎么知道每一列有几颗雷。如果知道了第i列和i-1列的雷数第i+1列的雷数为num[i]-dp[i-1]-dp[i],num是中间那行的输入数据。dp不是动态规划只是个递推数组,表示第i列有几个雷。初始i=1可以猜0,1,2三种情况,i=2只需要i=1就能推出来。
坑点:cin>>s tle;vs不能用gets,忘了getchar();mod is not always 1e9+5;flag ok 放到循环外面了。
ac代码:
#include<iostream>
#include<string>
#include<string.h>
#include<stdio.h> using namespace std;
const int mod=1e8 + ;
const int maxn = 1e4 + ;
int dp[maxn], num[maxn];
int main() {
int t;
cin >> t;
getchar();
while (t--) {
memset(dp, , sizeof(dp));
memset(num, , sizeof(num));
char s[maxn];
gets(s);
//if (s == "2") {
// cout << 1 << endl; break;
//}
int len = strlen(s);
for (int i = ; i < len; i++) {
num[i + ] = s[i] - '';
}
int ans = ;
for (int j = ; j <= num[]; j++) {
int ok = ;
if (j > )break;
dp[] =j;
int i;
for ( i = ; i <= len; i++) {
dp[i] = num[i - ] - dp[i - ] - dp[i - ];
if (dp[i] > || dp[i] < ) {
ok = ; break;
}
}
if ((i == len + )&&dp[len] + dp[len - ] != num[len])ok = ;
//if ()ok = 0;
int p = ;
if (ok) {
for (int i = ; i <= len; i++)if (dp[i] == )p = (p * ) % mod;
ans = (ans + p) % mod;
}
}
cout << ans<<endl;
}
}
HDU-5965 扫雷 模拟+想法的更多相关文章
- HDU 5965 扫雷 【模拟】 (2016年中国大学生程序设计竞赛(合肥))
扫雷 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submissi ...
- HDU 5965 枚举模拟 + dp(?)
ccpc合肥站的重现...一看就觉得是dp 然后强行搞出来一个转移方程 即 根据第i-1列的需求和i-1 i-2列的枚举摆放 可以得出i列摆放的种类..加了n多if语句...最后感觉怎么都能过了..然 ...
- HDU 5965 扫雷
扫雷游戏是晨晨和小璐特别喜欢的智力游戏,她俩最近沉迷其中无法自拔. 该游戏的界面是一个矩阵,矩阵中有些格子中有一个地雷,其余格子中没有地雷. 游戏中,格子可能处于己知和未知的状态.如果一个己知的格子中 ...
- HDU 5965 扫雷(dfs)题解
题意:给你一个3*n的格子,中间那行表明的是周围8格(当然左右都没有)的炸弹数量,上下两行都可以放炸弹,问你有几种可能,对mod取模 思路:显然(不),当i - 1和i - 2确定时,那么i的个数一定 ...
- Hdu OJ 5965 扫雷(递推)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5965 题目大意:中文题,自己读 解图思路:对于每一列都有三种情况--0, 1, 2. 如果第一列确定地 ...
- HDU 5965(三行扫雷 dp)
题意是在一个 3 行 n 列的图上进行扫雷,中间一行没有雷,且中间一行的每一格都会显示周围的雷数,问根据已知的雷数在上下两行设置地雷的方法数. 分析知每一列所填雷数的和与周围的雷数有关,但每列具体的填 ...
- HDU 5965:扫雷(DP,递推)
扫雷 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submissi ...
- HDU 4121 Xiangqi 模拟题
Xiangqi Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4121 ...
- hdu 5071 Chat(模拟)
题目链接:hdu 5071 Chat 题目大意:模拟题. .. 注意最后说bye的时候仅仅要和讲过话的妹子说再见. 解题思路:用一个map记录每一个等级的妹子讲过多少话以及是否有这个等级的妹子.数组A ...
随机推荐
- SqlServer当前月份时间
SqlServer当前月份时间 SELECT -DAY(getdate()+-DAY(getdate()))
- 屏蔽win10中文输入法
Windows 10自带的默认输入法,是通过Shift键来切换中/英文,这样为玩一些不需要打字,却需要使用Shift键的游戏带来了不便,比如,在进行游戏的时候,按下Shift键后,再按跳跃.射击等键, ...
- 使用powerdesigner连接MySQL并设置逆向工程图文教程
我用的是Win7 x64的系统,安装了64为的mysql-connector-odbc-5.1.10-winx64.msi在数据源中test正常,但在powerdesigner连接Mysql总是弹出“ ...
- 基础知识《零》---一张图读懂JDK,JRE,JVM的区别与联系
- 微信小程序--消息推送配置Token令牌错误校验失败如何解决
微信开放第三方API接口, 申请地址: https://mp.weixin.qq.com/advanced/advanced?action=interface&t=advanced/inter ...
- django进阶-1
前言: 各位久等了,django进阶篇来了. 一.get与post 接口规范: url不能写动词,只能写名词 django默认只支持两种方式: get, post get是获取数据 ?user=zcl ...
- 【Python】给程序加个进度条
对于开发或者运维来说,使用 Python 去完成一些跑批任务,或者做一些监控事件是非常正常的情况.那么如何有效地监控任务的进度?除了在任务中加上 Log 外,还能不能有另一种方式来了解任务进展到哪一步 ...
- 【云迁移论文笔记】A Comparison of On-premise to Cloud Migration Approaches
A Comparison of On-premise to Cloud Migration Approaches Author Info: Claus Pahl senior lecturer at ...
- 【Spring源码分析系列】加载Bean
/** * Create a new XmlBeanFactory with the given input stream, * which must be parsable using DOM. * ...
- VS 2008 头文件库文件设置
在程序开发中,很多时候需要用到别人开发的工具包,如OpenCV和itk.一般而言,在vs2008中,很少使用源文件,大部分是使用对类进行声明的头文件和封装了类的链接库(静态lib或动态dll). 如果 ...