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] ios7UI适配 【转】

    http://blog.csdn.net/toss156/article/details/11843873#comments (1)如果应用程序始终隐藏 status bar 那么恭喜呢,你在UI上需 ...

  2. STURTS2 HELLOWORLD

    4. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC " ...

  3. 常用的meta标签总结

    <!-- 关键字,搜所引擎 SEO --><meta http-equiv="keywords" content="关键字1,关键字2,..." ...

  4. servlet笔记,配置与 http相关

    tomcat配置环境变量:        JAVA_HOME= 指向你的jdk的主目录(bin目录的上一层) server.xml: <Context path="/myweb2&qu ...

  5. 分享基于.NET MVC+EF CodeFirst+IOC+EasyUI的框架设计

    **注:要做工,没什么时间,等有空时会上传到GIT,项目结构如上,简单的说一下: **支持IOC及多数据库等,各项目由MVC区域隔离: 主要使用基于接口与抽象类进行高度的抽象与接口隔离,与其它框架比较 ...

  6. mysql 异常处理

    --该文章内容通过网络搜索组合, mysql 异常,可以自定义异常,再应用.也可使用系统默认的异常,捕获应用. 一.异常定义: DECLARE condition_name CONDITION FOR ...

  7. 自定义实现IEnumerable

    Demo: http://files.cnblogs.com/files/georgeHeaven/Demo.IEnumerable.rar 一.使用场景 在开发过程中,经常需要使用foreach来循 ...

  8. 人工手动冷备不完全恢复介绍(purge表不完全恢复)

    不完全恢复不完全恢复的基本类型:1)基于时间点 (until time): 使整个数据库恢复到过去的一个时间点前2)基于scn (until change): 使整个数据库恢复到过去的某个SCN前3) ...

  9. http://www.cnblogs.com/ycxyyzw/archive/2012/07/31/2616951.html

    http://www.cnblogs.com/ycxyyzw/archive/2012/07/31/2616951.html

  10. 子查询 此处该用AND 而不是 WHERE

    条件:有一张账户表,一张订单表. 需求:求出所有role = 2 即客服人员,所有操作成功的订单数量.结果:能查出所有的客服人员名称,以及操作的订单数量(关键点在于,没有操作过订单,则数量显示为0) ...