zoukankan      html  css  js  c++  java
  • BZOJ 1009: [HNOI2008]GT考试

    1009: [HNOI2008]GT考试

    Time Limit: 1 Sec  Memory Limit: 162 MB
    Submit: 3437  Solved: 2110
    [Submit][Status][Discuss]

    Description

      阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字。
    他的不吉利数学A1A2...Am(0<=Ai<=9)有M位,不出现是指X1X2...Xn中没有恰好一段等于A1A2...Am. A1和X1可以为0

    Input

      第一行输入N,M,K.接下来一行输入M位的数。 N<=10^9,M<=20,K<=1000

    Output

      阿申想知道不出现不吉利数字的号码有多少种,输出模K取余的结果.

    Sample Input

    4 3 100
    111

    Sample Output

    81

    HINT

     

    Source

     
    [Submit][Status][Discuss]

    看到N的范围肯定想矩阵快速幂,按照套路,先构造DP,然后考虑用矩阵快速加速。

    f[i][j]表示选好了前i位数,当前串匹配到不详串的第j个字符,此时的方案数。

    考虑向后的转移,无非就是枚举下一个数字是什么,有10种选择,其中一种会向f[i+1][j+1]转移,其余的根据KMP的next[]转移即可。

    因为不详串最多20,所以转移边长度不会超过20,构造一个20x20的转移矩阵做快速幂好了。

    @Author: YouSiki

  • 相关阅读:
    hdu4734 F(x)
    hdu2089 不要62 两解
    luogu2602 [ZJOI2010]数字计数 两解
    lemon
    UVA1218 完美的服务 Perfect Service
    luogu HNOI2003消防局的设立
    uva10891 game of sum
    uva10635 Prince and Princess
    UVA1394 And Then There Was One
    uva10003切木棍
  • 原文地址:https://www.cnblogs.com/yousiki/p/6411843.html
Copyright © 2011-2022 走看看