hdu5389(2015多校8)--Zero Escape(dp)

题目链接:点击打开链接

题目大意:有A和B两个门,每个门上有一个数字,现在有n个人,每个人手里也有一个数字,现在n个人都要选择一个门进去,要求计算门内的人的数字每一位的和,一直累加到一位。这个数和门代表的数字是相同的。问n个人有多少种走法。

例如 65536 -> 25 -> 7

输入n A B,之后一行输入n个数字代表n个人手中的数字。每个数字都是大于0的

输出种类个数。

对于累加每一位的和到一位的值 = 初始数的每一位的和%9,其中0代表累加的结果是9

首先判断所有人的和%9,是不是(A+B)%9,如果不同,那么就是说不会存在人们分开到达A和B的情况,只有可能所有人都进一个门,或者都不进。

如果想同,那么如果一些人满足进入A的条件,那么剩下的人一定都满足进入B的,所以统计能进入A中个数。

dp[i][j]当第i个人是否进入A内,j为A门内所有人的和%9的结果。最终dp[n][A]就是所有的结果。

注意:对a[i]、A、B进行对9取余。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std ;
#define Mod 258280327
#define LL __int64
LL dp[100010][10] ;
int a[100010] ;
int main() {
    int t , i , j , n , A , B , sum ;
    scanf("%d", &t) ;
    while( t-- ) {
        scanf("%d %d %d", &n, &A, &B) ;
        memset(dp,0,sizeof(dp)) ;
        A %= 9 ; B %= 9 ;
        for(i = 1 , sum = 0 ; i <= n ; i++) {
            scanf("%d", &a[i]) ;
            a[i] %= 9 ;
            sum = (sum+a[i]) % 9 ;
        }
        if( (A+B)%9 != sum ) {
            if( A == sum ) dp[0][0]++ ;
            if( B == sum ) dp[0][0]++ ;
            printf("%I64d\n", dp[0][0]) ;
            continue ;
        }
        dp[0][0] = 1 ;
        for(i = 1 ; i <= n ; i++) {
            for(j = 0 ; j < 10 ; j++) {
                dp[i][j] += dp[i-1][j] ;
                dp[i][ (j+a[i])%9 ] += dp[i-1][j] ;
                dp[i][ (j+a[i])%9 ] %= Mod ;
            }
        }
        printf("%I64d\n", dp[n][A]%Mod ) ;
    }
    return 0 ;
}

版权声明:转载请注明出处:http://blog.csdn.net/winddreams

时间: 2024-11-05 13:31:02

hdu5389(2015多校8)--Zero Escape(dp)的相关文章

HDU 5378 Leader in Tree Land(2015 多校第7场 dp)

Leader in Tree Land Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 150    Accepted Submission(s): 54 Problem Description Tree land has  cities, connected by  roads. You can go to any city from

HDU 5375(2015多校7)-Gray code(dp)

题目地址:HDU 5375 题意:给你一个二进制串,带'?'的位置可以由你来决定填'1'还是'0',补充完整之后转换成格雷码表示,每一个位置都有一个权值a[i],只有格雷码为'1'的位可以加上权值,问你最终权值之和最大为多少. 思路:首先要明白二进制码和格雷码是如何转换的: dp[i][0]表示第i位为0的时候的最大值,dp[i][1]表示第i位为1的时候的最大值.对于第i位的最大值由dp[i-1][0],dp[i-1][1]和当前权值a[i]得到.当前的位的二进制码有0,1,?三种情况,所以就

hdu5289||2015多校联合第一场1002贪心+RMQ

http://acm.hdu.edu.cn/showproblem.php?pid=5289 Problem Description Tom owns a company and he is the boss. There are n staffs which are numbered from 1 to n in this company, and every staff has a ability. Now, Tom is going to assign a special task to

hdu5351(2015多校5)--MZL&#39;s Border(打表,,找规律)

题目链接:点击打开链接 题目大意:给出b1 = 'b' , b2 = 'a' , bi = b(i-1)b(i-2),将i-1和i-2链接起来,记录一个串的s[1-i] 和s[n-i+1-n]相同的话 Border,当i为最长是为LBorder,现在给让求在bn这个串上的前m个字符组成的子串的LBorder 通过计算可以发现,b字符串的前缀都是相同的,所以只要求出m的LBorder就行,和n是无关的,打表找出规律,找出对应不同的m,LBorder的值,因为存在大数,用java写 dp[i]第i层

HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&#39;s problem(manacher+二分/枚举)

HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分相同,第一部分与第二部分对称. 现在给你一个长为n(n<10^5)的序列,求出该序列中N序列的最大长度. 思路: 来自官方题解:修正了一些题解错别字(误 先用求回文串的Manacher算法,求出以第i个点为中心的回文串长度,记录到数组p中 要满足题目所要求的内容,需要使得两个相邻的回文串,共享中间的一部分,也就是说,左边的回文串长度的一半,要大于等于共享部分的长度,右边回文串也是一样. 因为我们已经记录下来以

HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&amp;#39;s problem(manacher+二分/枚举)

pid=5371">HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分同样,第一部分与第二部分对称. 如今给你一个长为n(n<10^5)的序列,求出该序列中N序列的最大长度. 思路: 来自官方题解:修正了一些题解错别字(误 先用求回文串的Manacher算法.求出以第i个点为中心的回文串长度.记录到数组p中 要满足题目所要求的内容.须要使得两个相邻的回文串,共享中间的一部分,也就是说.左边的回文串长度的一半,要大于等于共享部分的长度,右边回文串也

hdu 5288||2015多校联合第一场1001题

http://acm.hdu.edu.cn/showproblem.php?pid=5288 Problem Description OO has got a array A of size n ,defined a function f(l,r) represent the number of i (l<=i<=r) , that there's no j(l<=j<=r,j<>i) satisfy ai mod aj=0,now OO want to know ∑i

hdu5348(2015多校5)--MZL&#39;s endless loop(搜索)

题目链接:点击打开链接 题目大意:给出n个点,m条无向边,现在要求将无向边变为有向边,要保证每个点的出度和入度的差不超过1 直接进行搜索,对每个点进行出度和入度的判断,如果出度大,就先进行反向的搜索(每搜索一条边u,v就认为这是一条v到u的有向边),反之,进行正向搜索(每搜到一条边u,v认为这是一条u到v的有向边),一直搜索到找不到边能继续为止. 注意: 1.已经使用过的边为了防止再次被遍历,可以修改head,head[u] = edge[i].next 2.注意自环,因为搜索是判断能不能继续向

hdu5379||2015多校联合第7场1011 树形统计

http://acm.hdu.edu.cn/showproblem.php? pid=5379 Problem Description Little sun is an artist. Today he is playing mahjong alone. He suddenly feels that the tree in the yard doesn't look good. So he wants to decorate the tree.(The tree has n vertexs, i