【HDU - 5965】扫雷(dp)

题干:

扫雷游戏是晨晨和小璐特别喜欢的智力游戏,她俩最近沉迷其中无法自拔。
该游戏的界面是一个矩阵,矩阵中有些格子中有一个地雷,其余格子中没有地雷。 游戏中,格子可能处于己知和未知的状态。如果一个己知的格子中没有地雷,那么该 格子上会写有一个一位数,表示与这个格子八连通相邻的格子中地雷总的数量。
现在,晨晨和小璐在一个3行N列(均从1开始用连续正整数编号)的矩阵中进 行游戏,在这个矩阵中,第2行的格子全部是己知的,并且其中均没有地雷;而另外 两行中是未知的,并且其中的地雷总数量也是未知的。
晨晨和小璐想知道,第1行和第3行有多少种合法的埋放地雷的方案。

Input

包含多组测试数据,第一行一个正整数T,表示数据组数。
每组数据由一行仅由数字组成的长度为N的非空字符串组成,表示矩阵有3行N 列,字符串的第i个数字字符表示矩阵中第2行第i个格子中的数字。
保证字符串长度N <= 10000,数据组数<= 100。

Output

每行仅一个数字,表示安放地雷的方案数mod100,000,007的结果。

Sample Input

2
22
000

Sample Output

6
1

解题报告:

直接dp[n][3][3],dp[i][j][k]代表第i列放置了j个地雷,第i-1列放置k个地雷的前缀合法方案数。更新的时候直接更新到第n+1列,这样就不用特判了。直接取值就行。注意注释掉的那一句,不需要特判,当时是想的,剩下那些状态都是非法的了,所以不需要进行更新了,但是其实更新了也没关系,因为反正也用不到,也就是说你可以更新了,但是不取这个值就可以了。

再就是数组需要开到dp[n][9][9],因为虽然你用不到这些值,但是你状态转移方程中可能会用到这些非法值,所以为了防止越界,需要数组开大一点。(当然,你直接用ifelse特判掉越界情况也可以,但是比较麻烦)

至于为什么要更新到n+1列,是因为你更新到第i列的时候,可完全确定的是第i-1列的值,所以要完全确定第n列的值,需要第n+1列的状态,只不过取  让第n+1列放置地雷个数为0  的状态就好了。

其实还有更简单的方法,因为第一列的值定下来,通过s[1],第二列地雷肯定也是定的,而通过s[2]又可以确定s[3],以此类推,所以只要第一列的值确定了,后面的值都确定了,所以也可以直接递推过去。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define FF first
#define SS second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
const int MAX = 20000 + 5;
const ll mod = 100000007;
char s[MAX];
ll dp[MAX][10][10];
int main()
{int T;cin>>T;while(T--) {scanf("%s",s+1);int n = strlen(s+1);s[n+1]=s[n]+9;for(int i = 1; i<=n+1; i++) {for(int j = 0; j<3; j++) {for(int k = 0; k<3; k++) dp[i][j][k]=0;}}for(int j = 0; j<3; j++) {if(j > s[1]-'0') continue;if(j == 1) dp[1][j][0]=2;else dp[1][j][0]=1;}for(int i = 2; i<=n+1; i++) {for(int j = 0; j<3; j++) {
//				if(i == n+1 && j>0) continue;for(int k = 0; k<3; k++) {if(s[i]-'0' < j+k) continue;if(s[i-1]-'0' < j+k) continue;//这句去掉其实也能过,但是有RE风险dp[i][j][k] += dp[i-1][k][s[i-1]-'0'-j-k];if(j == 1) dp[i][j][k] += dp[i-1][k][s[i-1]-'0'-j-k];dp[i][j][k] %= mod;}}}ll ans = 0;for(int k = 0; k<3; k++) ans = (ans+dp[n+1][0][k])%mod;printf("%lld\n",ans);}return 0 ;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java常见异常类图(分类了Error/RuntimeExecption、check Exception)

Error&#xff1a;表示由JVM所侦测到的无法预期的错误&#xff0c;由于这是属于JVM层次的严重错误&#xff0c;导致JVM无法继续执行&#xff0c;因此&#xff0c;这是不可捕捉到的&#xff0c;无法采取任何恢复的操作&#xff0c;顶多只能显示错误信息。Exception&#xff1a;表…

Apollo进阶课程㊷丨Apollo实战——车辆与循迹驾驶能力实战

原文链接&#xff1a;进阶课程㊷丨Apollo实战——车辆与循迹驾驶能力实战 循迹自动驾驶是指让车辆按照录制好的轨迹线进行自动驾驶&#xff0c;其涉及到自动驾驶中最基本的底盘线控能力、定位能力、控制能力&#xff0c;是自动驾驶系统的一个最小子集。 上周阿波君为大家详细介…

【HDU - 5961】传递(图,思维,暴力,枚举点)

题干&#xff1a; 我们称一个有向图G是传递的&#xff0c;当且仅当对任意三个不同的顶点a,,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c。 我们称图G是一个竞赛图&#xff0c;当且仅当它是一个有向图且它的基图是完全图。换句 话说&#xff0c;将完全图每…

Java--对象内存布局

在HotSpot虚拟机中&#xff0c;对象在内存中的存储布局可以分为3块区域&#xff1a;对象头部、实例数据、对齐填充。 一、对象头部Header的布局 Mark WordClass 指针在32位系统下&#xff0c;上面两部分各占4B; 在64位系统中&#xff0c;Mark Work占4B&#xff0c;class指针在…

Apollo进阶课程㊸丨Apollo实战——障碍物感知和路径规划能力实战

原文链接;进阶课程㊸丨Apollo实战——障碍物感知和路径规划能力实战 环境感知在自动驾驶汽车应用中占据了核心地位。一辆车要实现自动驾驶&#xff0c;障碍物感知是最基础也是最核心的功能。 上周阿波君为大家详细介绍了「进阶课程㊷丨Apollo实战——车辆与循迹驾驶能力实战」…

3.1)深度学习笔记:机器学习策略(1)

目录 1&#xff09;Why ML Strategy 2&#xff09;Orthogonalization 3&#xff09;Single number evaluation metric 4&#xff09;Satisficing and optimizing metrics 5&#xff09;训练/开发/测试集划分&#xff08;Train/dev/test distributions&#xff09; 6&…

【HDU - 5968】异或密码(思维,STLmap)

题干&#xff1a; 晨晨在纸上写了一个长度为N的非负整数序列{aiai}。对于这个序列的一个连续子序列{al,al1,…&#xff0c;aral,al1,…&#xff0c;ar}晨晨可以求出其中所有数异或的结果 alxoral1xor...xoraralxoral1xor...xorar其 中xor表示位异或运算&#xff0c;对应C、C、…

接口和抽象类是否继承了Object

我们先看一下Java的帮助文档对于Object的描述&#xff1a; Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class. Object 类是类层次结构的根类。每个类都使用 …

3.2)深度学习笔记:机器学习策略(2)

目录 1&#xff09;Carrying out error analysis 2&#xff09;Cleaning up Incorrectly labeled data 3&#xff09;Build your first system quickly then iterate 4&#xff09;Training and testing on different distributios 5&#xff09;Bias and Variance with m…

【CodeForces - 674B 】Bear and Two Paths(贪心,思维,水题)

题干&#xff1a; 第一行给出N和M代表有N个难度1~N的题目&#xff0c;M代表有M个约束。接下来M行&#xff0c;每行两个数代表这一个约束的两个题目。 代表难度的数字越大&#xff0c;题目越难。现在要求你将N个题目分成不重不漏的两组(div1和div2)&#xff0c;要求1每组不能为…

4.1)深度卷积网络:卷积神经网络基础

目录 1&#xff09;Computer vision 2&#xff09;Edge detection example&#xff08;理解&#xff09; 3&#xff09;More edge detection 4&#xff09;Padding&#xff08;重点&#xff09; 5&#xff09;Strided convolutions&#xff08;重点&#xff09; 6&#x…

【2019icpc南京站网络赛 - H】Holy Grail(最短路,spfa判负环)

题干&#xff1a; As the current heir of a wizarding family with a long history,unfortunately, you find yourself forced to participate in the cruel Holy Grail War which has a reincarnation of sixty years.However,fortunately,you summoned a Caster Servant wi…

4.2)深度卷积网络:实例研究

目录 1&#xff09;Why look at case studies? 2&#xff09;Classic networks&#xff08;理解&#xff09; 3&#xff09;ResNets&#xff08;理解&#xff09; 4&#xff09;Why ResNets work?&#xff08;经典&#xff09; 5&#xff09;Networks in Networks and 1…

10种常见的软件架构模式

有没有想过要设计多大的企业规模系统&#xff1f;在主要的软件开发开始之前&#xff0c;我们必须选择一个合适的体系结构&#xff0c;它将为我们提供所需的功能和质量属性。因此&#xff0c;在将它们应用到我们的设计之前&#xff0c;我们应该了解不同的体系结构。 什么是架构模…

4.3)深度卷积网络:目标检测

目录 1&#xff09;Object localization&#xff08;重点&#xff09; 2&#xff09;Landmark detection 3&#xff09;Object detection 4&#xff09;Convolutional implementation of sliding windows 5&#xff09;Bounding box prediction&#xff08;重点&#xff0…

【牛客 - 82B】区间的连续段(贪心,建图,倍增)

题干&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/82/B 来源&#xff1a;牛客网 给你一个长为n的序列a和一个常数k 有m次询问&#xff0c;每次查询一个区间[l,r]内所有数最少分成多少个连续段&#xff0c;使得每段的和都 < k 如果这一次查询无解…

苹果手机PD快充电压电流全程详解

iphone PD充电策略&#xff0c;一共分为5个阶段。 第①阶段&#xff1a;iphone X电量为0%处于关机状态&#xff0c;这时插入PD充电器iphone会检测是否支持apple 5V2.4A协议&#xff0c;是的话会以5V2.4A进行充电。苹果原厂29w / 61w / 87w PD充电器都是自带 apple 5V2.4A 协议…

4.4)深度卷积网络:人脸识别和神经风格转换

目录 1&#xff09;What is face recognition? 2&#xff09;One-shot learning 3&#xff09;Siamese network 4&#xff09;Triplet Loss&#xff08;重点&#xff09; 5&#xff09;Face Verification and Binary Classification 6&#xff09;What is neural style …

【2019牛客暑期多校训练营(第八场)- G】Gemstones(栈,模拟)

题干&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/888/G 来源&#xff1a;牛客网 Gromah and LZR have entered the seventh level. There are a sequence of gemstones on the wall. After some tries, Gromah discovers that one can take exactly…

一步步编写操作系统 35 内存为何要分页

一直以来我们都直接在内存分段机制下工作&#xff0c;目前未出问题看似良好&#xff0c;的确目前咱们的应用过于简单了&#xff0c;就一个loader在跑&#xff0c;能出什么问题呢。可是想像一下&#xff0c;当我们物理内存不足时会怎么办呢&#xff1f;比如系统里的应用程序过多…