Matches Puzzle Game

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5456

数位DP

首先我把C-A=B改为A+B=C(我觉得会简单一点<( ̄3 ̄)>)

注意到前面填的数字不影响后面的数字,所以可以定义状态:

dp[i][j][a][b]表示已经用了i根火柴,进位为j,A前面能否再加数字(a),B前面能否再加数字(b)

然后根据a和b的值进行分类讨论即可。

(最近期中考好烦啊好多事都没弄)

代码如下:

 /*苟利国家生死已,岂因祸福避趋之*/
#include<cstdio>
#include<iostream>
#include<cstring>
#define MATCH 505
#define TOWARDS 2
#define FA 2//前止
#define FB 2
using namespace std;
typedef long long LL;
LL p[]={,,,,,,,,,};
LL T,n,m,dp[MATCH][TOWARDS][FA][FB];
void init(){
memset(dp,,sizeof(dp));
dp[][][][]=;
scanf("%I64d%I64d",&n,&m);
n-=;
}
int main(void){
scanf("%I64d",&T);
for(LL times=;times<=T;++times){
init();
for(LL i=;i<n;++i)
for(LL j=;j<;++j)
for(LL a=;a<;++a)
for(LL b=;b<;++b)
if(dp[i][j][a][b]){
if(a==&&b==&&j==&&i+p[]<=n){
dp[i+p[]][][][]=(dp[i+p[]][][][]+dp[i][j][a][b])%m;
}else if(a==&&b==){
for(LL x=;x<=;++x){
LL r=x+j;
LL rr=i+p[x]+p[r%];
if(rr<=n){
dp[rr][r/][a][]=(dp[rr][r/][a][]+dp[i][j][a][b])%m;
if(x!=)dp[rr][r/][a][]=(dp[rr][r/][a][]+dp[i][j][a][b])%m;
}
}
}else if(a==&&b==){
for(LL x=;x<=;++x){
LL r=x+j;
LL rr=i+p[x]+p[r%];
if(rr<=n){
dp[rr][r/][][b]=(dp[rr][r/][][b]+dp[i][j][a][b])%m;
if(x!=)dp[rr][r/][][b]=(dp[rr][r/][][b]+dp[i][j][a][b])%m;
}
}
}else if(a==&&b==){
for(LL x=;x<=;++x)
for(LL y=;y<=;++y){
LL r=x+y+j;
LL rr=i+p[x]+p[y]+p[r%];
if(rr<=n){
dp[rr][r/][a][b]=(dp[rr][r/][a][b]+dp[i][j][a][b])%m;
if(x!=)dp[rr][r/][][b]=(dp[rr][r/][][b]+dp[i][j][a][b])%m;
if(y!=)dp[rr][r/][a][]=(dp[rr][r/][a][]+dp[i][j][a][b])%m;
if(x!=&&y!=)dp[rr][r/][][]=(dp[rr][r/][][]+dp[i][j][a][b])%m;
}
}
}
}
printf("Case #%I64d: %I64d\n",times,dp[n][][][]);
}
}

Matches Puzzle Game的更多相关文章

  1. HDU5456 Matches Puzzle Game(DP)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5456 Description As an exciting puzzle game for ...

  2. 【HDU 5456】 Matches Puzzle Game (数位DP)

    Matches Puzzle Game Problem Description As an exciting puzzle game for kids and girlfriends, the Mat ...

  3. 2015年ACM沈阳网络赛(准备做掉4道:)

    Traversal Best Solver Minimum Cut Dividing This Product Excited Database Fang Fang Matches Puzzle Ga ...

  4. 2015 ACM/ICPC Asia Regional Shenyang Online

    1001 Traversal 1002 Best Solver 1003 Minimum Cut 类似于POJ 3417的做法. 考虑每条新边对树边的覆盖次数. 每条树边被覆盖的次数其实就是断裂这条树 ...

  5. CF613E Puzzle Lover

    题意 英文版题面 Problems Submit Status Standings Custom test .input-output-copier { font-size: 1.2rem; floa ...

  6. keil MDK error: L6236E: No section matches selector - no section 错误

    今天板子刚到,新建的第一个工程就报错了. .\Objects\cse.sct(7): error: L6236E: No section matches selector - no section t ...

  7. Puzzle 面向服务/切面(AOP/IOC)开发框架 For .Net

    Puzzle 面向服务/切面AOP开发框架 For .Net AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效 ...

  8. 解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题

    解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题http ...

  9. Matches正则使用提取内容

    用VS新建WinForm程序,窗体上是三个文本框和一个按钮.可以自己构造正则表达式,自己修改匹配内容 正则表达是要提取的部分为hewenqitext 代码如下: using System; using ...

随机推荐

  1. [ios2]蓝牙通信【转】

    iPhone开发应用中关于GameKit蓝牙实例讲解是本文要介绍的内容,主要是来了解并学习GameKit蓝牙实例.介绍一下这个实例实现的是两个带有蓝牙设备的touch之间的一个小游戏,在界面上有个可以 ...

  2. python3的文件读写模式

    任何一种语言,文件的读写都是非常常见的.python的文件读写非常简单,仅仅一个函数open(file也可以,但是我不常用). 先看看官网的解释: open(file, mode='r', buffe ...

  3. 教你成为全栈工程师(Full Stack Developer) 一-各显神通总结八大类编程语言的区别

    为了能在最快的时间里理解更多语言的相同点和不同点,我用大家最熟悉的Hello World来展示一下各个语言的奥妙   请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址 ...

  4. Socket编程中 setsockopt的作用

    功能描述: 获取或者设置与某个套接字关联的选 项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层.当操作套接字选项时,选项位于的层和选项的名称必须给出.为了操作套接字层的选项,应该 将层的值 ...

  5. 在Windows上创建同样的Linux操作环境

    在之前的文章中,介绍了我在GNU/Linux图形界面环境下所使用的工具集合.其基本目的是在保证占用最少系统资源的条件下,将电脑操作效率推向极致.这样的工具组合尤如瑞士军刀一般,简洁.高效.功能全面.与 ...

  6. ele.me在IOS浏览器端启动APP的技巧分析

    ele.me在IOS浏览器端启动APP的技巧分析 巧妙利用后台重定向,在schemes启动时提示用户打开,启动不了APP时能够及时跳转至下载页面. 避免报错页面的出现以及用户还没来的及选择就跳转到下载 ...

  7. 关于FileSystemXmlApplicationContext和ClassPathXmlApplicationContext路径问题

    在码代码的时候发现使用这两个方法写路径的时候总是存在问题,所以百度了一下解决了这个问题. 关于FileSystemXmlApplicationContext这个路径有2总写法 有盘符的代表的是绝对路径 ...

  8. sql第三天

    ->完整的select语句及执行顺序(必须记住) 5...select 5.2->distinct 7...top n [percent] 5.1->列名 聚合函数(1.2-> ...

  9. python3数据结构

    列表 list.append(x) 把一个元素添加到列表的结尾,相当于a[len(a):]=[x] list.extend(L) 将一个给定列表中的所有元素都添加到另一个列表中,相当于a[(len): ...

  10. Chapter 2 Open Book——38

    I looked around me to make sure it was clear. 我看了我周围一圈确定都是干净的. 我看看四周,以确认前后没有来车. That's when I notice ...