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 ...
随机推荐
- 基于AFNetworking 3.0的取消已发出的网络请求
一般情况下主动取消请求的需求不会太多 除非以下几种情况 1.比如电商应用为例 请求频繁,数据量大 2.对性能的要求比较高 3.网络环境比较差 当一个用户打开一个界面 看到的却是漫长的等待框 这时候用户 ...
- 使用div模拟textarea,实现文本输入框高度自适应(附:js控制textarea实现文本输入框高度自适应)
一.使用textarea标签进行多行文本的输入有很多限制,比如不能实现高度自适应,会出现难看的滚动条等问题. HTML5中添加了一个新属性contenteditable,该属性可以让input,tex ...
- oracle数据库连接串格式
oracle常用链接串格式:jdbc:oracle:thin:@//<host>:<port>/<service_name> jdbc:oracle:thin:@& ...
- centos tomcat 安装
安装说明 安装环境:CentOS-6.3 安装方式:源码安装 软件:apache-tomcat-7.0.29.tar.gz 下载地址:http://tomcat.apache.org/downloa ...
- bootstrap 混合标签
<html lang="zh_cn"> <head> <meta charset="utf-8"> <meta htt ...
- Lintcode解题报告
1. Num.196 寻找缺失的数 给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数. 注意事项 可以改变序列中数的位置. 您在真实的面试中是否遇到过这个题 ...
- B+树概念学习
转载自 从B树.B+树.B*树谈到R 树 1.用阶定义的B树 B 树又叫平衡多路查找树.一棵m阶的B 树 (注:切勿简单的认为一棵m阶的B树是m叉树,虽然存在四叉树,八叉树,KD树,及vp/R树/R* ...
- Mysql 常用命令和注意事项
1. 连接mysql数据库 如果配置了环境变量可以直接运行,如果没有配置环境变量需要在安装目录...\bin下运行, cmd -> mysql -u root -p,然后输入密码: 或者可以运行 ...
- Vim编辑器与Shell命令脚本
章节简述: 本章节将教给您如何使用Vim编辑器来编写文档.配置主机名称.网卡参数以及yum仓库 ,熟练使用各个模式和命令快捷键. 我们可以通过Vim编辑器将Linux命令放入合适的逻辑测试语句(if. ...
- C/C++-style输入输出函数
C风格的输入输出 (1) int getchar() 与 int putchar(int c) getchar从stdin输入流中读取字符,每次只能读取一个字符.若想一次性读取多个字符,则可将其放入循 ...