zoukankan      html  css  js  c++  java
  • [jzoj]1115.【HNOI2008】GT考试

    Link

      https://jzoj.net/senior/#main/show/1115

    Description

      申准备报名参加GT考试,准考证号为n位数X1X2X3...Xn-1Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字。
    他的不吉利数字A1A2A3...Am-1Am(0<=Ai<=9)有m位,不出现是指X1X2X3...Xn-1Xn 中没有恰好一段等于A1A2A3...Am-1Am。A1和X1可以为0。
      阿申想知道不出现不吉利数字的号码有多少种,输出模K取余的结果。

    Solution

    40分:动态规划

      考虑到这道题匹配的顺序,可以采用动态规划。

      设f[i,j]表示选到前i位,当前匹配到不吉利数字的位数j。

      枚举当前位选的数(0~9),转移显然。

      可是j的转移略微复杂。这里分三种情况

      (1)当前位选的数使得j为0

      例如不吉利数字为1101,当前匹配了3位,即101,若当前选0或2~9的数字,则j为0。

      (2)当前选的数使得j为之前某一位的数

      例如不吉利数字为11321,当前匹配了4位,即1321,若当前选2,那么我们不会将j赋值为0,为什么?

      当出现21321的情况,开头两位可以与不吉利数字开头两位(21)匹配,故j应该为2

      在如同1202,当前第4位选0,我们j应该位2

      (3)按照不吉利数字的顺序发展

      例如不吉利数字为1101,当前匹配了3位,即101,若当前选1,则j位4

      我们可以用数组p[i,j]表示数字i放在当前已匹配了j位的不吉利数字上,上述所的j是多少。

      显然有递推式(状态转移方程)

      f[i+1,p[k,j]]+=f[i,j];(k位当前数字,j为原匹配了的位数,i为准考证位数匹配)

    100分:矩阵乘法

      显然可以用矩阵乘法来优化上面的递推式,用一个1*m和m*m的矩阵来弄

  • 相关阅读:
    使用原始XML资源——使用原始XML文件
    使用原始XML资源——定义原始XML资源
    属性动画(Property Animation)资源
    使用(Drawable)资源———AnimationDrawable资源
    使用(Drawable)资源———ClipDrawable资源
    RabbitMQ基本理论
    Celery分布式任务队列快速入门
    python多版本管理包pyenv
    CentOS6最佳实践
    BASH 基本语法
  • 原文地址:https://www.cnblogs.com/philchieh/p/7780127.html
Copyright © 2011-2022 走看看