hdu 5389 Zero Escape (dp)
题目:http://acm.hdu.edu.cn/showproblem.php?
pid=5389
题意:定义数根:①把每一位上的数字加起来得到一个新的数,②反复①直到得到的数仅仅有1位。给定n,A,B和n个一位数,求把这n个数分成两部分,使得这两部分的当中一部分的和的数根等于A另外一部分的和的数根等于B的方案数。
分析:一个数a的数根s=(a-1)%9+1,为了方便直接用s=a%9,当中0代表9。定义dp[i][j]表示前i个数中数根为j的方案数。
对于第i个数能够选也能够不选,那么状态转移方程为dp[i][j]=dp[i-1][j](不选),dp[i][(j+c[i])%9]+=dp[i-1][j](选)。特殊情况就是{i:1~n,sigma(c[i])}%9!=(A+B)%9,这样的情况不能将这n个数划分成非空的满足条件的两部分,须要特判一下。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 1e5+7;
const int mod = 258280327;
int dp[maxn][10],c[maxn];
int main()
{
int ncase,n,A,B,i,j;
scanf("%d",&ncase);
while(ncase--)
{
scanf("%d%d%d",&n,&A,&B);
int sum=0;
for(i=1;i<=n;i++)
{
scanf("%d",&c[i]);
sum+=c[i];
}
if(sum%9!=(A+B)%9)
{
if(A%9==sum%9 && B%9==sum%9)
printf("2\n");
else if(A%9==sum%9 || B%9==sum%9)
printf("1\n");
else
printf("0\n");
continue ;
}
dp[0][0]=1;
for(i=1;i<=n;i++)
{
for(j=0;j<=8;j++)
dp[i][j]=dp[i-1][j];
for(j=0;j<=8;j++)
dp[i][(j+c[i])%9]=(dp[i][(j+c[i])%9]+dp[i-1][j])%mod;
}
printf("%d\n",dp[n][A%9]);
}
return 0;
}
hdu 5389 Zero Escape (dp)的更多相关文章
- HDU 5389 Zero Escape(DP + 滚动数组)
Zero Escape Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) To ...
- HDU 5389 Zero Escape(dp啊 多校)
题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=5389 Problem Description Zero Escape, is a visual no ...
- HDU 5389 Zero Escape (MUT#8 dp优化)
[题目链接]:pid=5389">click here~~ [题目大意]: 题意: 给出n个人的id,有两个门,每一个门有一个标号,我们记作a和b,如今我们要将n个人分成两组,进入两个 ...
- hdu 5389 Zero Escape(记忆化搜索)
Problem Description Zero Escape, is a visual novel adventure video game directed by Kotaro Uchikoshi ...
- 2015 Multi-University Training Contest 8 hdu 5389 Zero Escape
Zero Escape Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ...
- HDU 5389 Zero Escape
题意:有一些人,每人拿一个号码,有两个门,门的值分别为A和B,要求把人分成两堆(可以为空)一堆人手持号码之和的数字根若等于A或者B就可以进入A门或者B门,要求两堆人分别进入不同的门,求有几种分配方式, ...
- 递推DP HDOJ 5389 Zero Escape
题目传送门 /* 题意:把N个数分成两组,一组加起来是A,一组加起来是B,1<=A,B<=9,也可以全分到同一组.其中加是按照他给的规则加,就是一位一位加,超过一位数了再拆分成一位一位加. ...
- HDU 1011 树形背包(DP) Starship Troopers
题目链接: HDU 1011 树形背包(DP) Starship Troopers 题意: 地图中有一些房间, 每个房间有一定的bugs和得到brains的可能性值, 一个人带领m支军队从入口(房 ...
- hdu 2296 aC自动机+dp(得到价值最大的字符串)
Ring Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
随机推荐
- Java学习笔记2---设置环境变量JAVA_HOME,CLASSPATH,PATH
1.环境变量包括: JAVA_HOME,CLASSPATH,PATH 2.设置环境变量的目的: 路径搜索,方便查找到jdk的安装路径.方便搜索用到的类文件.方便搜索用到的可执行文件如java,java ...
- 使用Jquery与vuejs操作dom比较
jquery实现添加功能 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 博客笔记(blog notebook)
1. 机器学习 2. NLP 3. code 实际好人 实际坏人 预测百分比 预测好人 \(p_GF^c(s_c\|G)\) \(p_BF^c(s_c\|B)\) \(F^c(s_c)\) 预测坏人 ...
- Matplotlib中文乱码解决办法
Matplotlib中文乱码 解决方法如下: 首先设置源码文件编码方式为UTF-8 #-*- coding: utf-8 -*- 接着设置字体属性字典 font = {'family': 'SimHe ...
- Leetcode 464.我能赢吗
我能赢吗 在 "100 game" 这个游戏中,两名玩家轮流选择从 1 到 10 的任意整数,累计整数和,先使得累计整数和达到 100 的玩家,即为胜者. 如果我们将游戏规则改为 ...
- javascript是脚本语言?javascript万物皆对象?
呵呵哒!带你见识下js面对对象的魅力 是的是的,退后,朕要开始装逼了- 这是什么鸟东西?是的是的,装逼开始,2016年度最佳JS编译器,ES6标准出来后,小伙伴们对新特性摩拳擦掌,奈何浏览器支持把我们 ...
- Codeforces Round #410 (Div. 2) A. Mike and palindrome
A. Mike and palindrome time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- ACM程序设计选修课——1036: Hungar的菜鸟赛季(YY)
1036: Hungar的菜鸟赛季 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 20 Solved: 14 [Submit][Status][Web ...
- Codeforces Round #345 (Div. 2)——A. Joysticks(模拟+特判)
A. Joysticks time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- Django的标准库django.contrib包介绍
原文地址:http://www.nowamagic.net/academy/detail/1318716 前面我们激活了 Django 后台,我们要使用自动化的站点管理工具(django.contri ...