Matches Puzzle Game
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的更多相关文章
- HDU5456 Matches Puzzle Game(DP)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5456 Description As an exciting puzzle game for ...
- 【HDU 5456】 Matches Puzzle Game (数位DP)
Matches Puzzle Game Problem Description As an exciting puzzle game for kids and girlfriends, the Mat ...
- 2015年ACM沈阳网络赛(准备做掉4道:)
Traversal Best Solver Minimum Cut Dividing This Product Excited Database Fang Fang Matches Puzzle Ga ...
- 2015 ACM/ICPC Asia Regional Shenyang Online
1001 Traversal 1002 Best Solver 1003 Minimum Cut 类似于POJ 3417的做法. 考虑每条新边对树边的覆盖次数. 每条树边被覆盖的次数其实就是断裂这条树 ...
- CF613E Puzzle Lover
题意 英文版题面 Problems Submit Status Standings Custom test .input-output-copier { font-size: 1.2rem; floa ...
- keil MDK error: L6236E: No section matches selector - no section 错误
今天板子刚到,新建的第一个工程就报错了. .\Objects\cse.sct(7): error: L6236E: No section matches selector - no section t ...
- Puzzle 面向服务/切面(AOP/IOC)开发框架 For .Net
Puzzle 面向服务/切面AOP开发框架 For .Net AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效 ...
- 解决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 ...
- Matches正则使用提取内容
用VS新建WinForm程序,窗体上是三个文本框和一个按钮.可以自己构造正则表达式,自己修改匹配内容 正则表达是要提取的部分为hewenqitext 代码如下: using System; using ...
随机推荐
- Activity和Fragment之间解耦
看鸿洋博客:http://blog.csdn.net/lmj623565791/article/details/42628537,整理下一些关键点 public class ContentFragme ...
- Cocos2d-x 3.x事件分发机制总结
在2.x中处理事件需要用到委托代理(delegate),相信学过2.x的触摸事件的同学,都知道创建和移除的流程十分繁琐.而在3.x中由于加入了C++11的特性,而对事件的分发机制通过事件分发器Even ...
- 如何写兼容浏览器和Node.js环境的Javascript代码
如果有打开过jQuery的源码(从1.11及以后),或者Vue.js.React.js的源码,都会在文件的前面看见这样一段代码: ( function( global, factory ) { &qu ...
- redis中的set集合问题
转自:http://www.linuxidc.com/Linux/2014-12/111015.htm Redis数据库(set类型和zset类型) [日期:2014-12-30] 来源:Linux社 ...
- nginx服务器上遇到了acces denied,报错是fastCGI只要好好修改配置就行了
猜想: 懵逼 实践: 首先通用的方法,并没有解决问题. 1.修改php-fpm配置文件vim /etc/php-fpm.d/www.confuser = nginx 编辑用户为nginx ...
- C# CookieHelper
using System; using System.Web; using System.Collections.Specialized; namespace Utils { /// <summ ...
- 关于mysql 5.6.24 的my.ini配置问题
- sparksql中行转列
进入sparksql beeline -u "jdbc:hive2://172.16.12.46:10015" -n spark -p spark -d org.apache.hi ...
- C# 语言规范_版本5.0 (第20章 附录B_语法)
A. 语法 此附录是主文档中描述的词法和语法以及不安全代码的语法扩展的摘要.这里,各语法产生式是按它们在主文档中出现的顺序列出的. A.1 词法文法 input: input-sectionopt i ...
- release management客户端无法连接到release management server的问题解决
参考:http://myalmblog.com/2014/03/error-installing-release-management-client/ 装了服务器,装客户端.然后客户端连不上服务器. ...