题目:http://poj.org/problem?id=3208 数位DP,首先按位数预处理出每一种位数的情况,包括有多少个魔鬼数和有多少个以6开头的非魔鬼数,以便递推、累加等等; 然后先找出第X个魔鬼数的位数,再一位一位从0开始填数; 写法有些技巧,详见代码及注释。 代码如下: ...
分类:
其他好文 时间:
2018-03-27 23:56:07
阅读次数:
250
/** 题目:poj3208 Apocalypse Someday 链接:http://poj.org/problem?id=3208 题意:求第K(K #include #include #include #include #include #include using namespace std... ...
分类:
其他好文 时间:
2017-09-12 18:40:05
阅读次数:
218
传送门 很神奇的一道题,正解是AC自动机+数位DP,个人感觉POPOQQQ大爷的方法更方便理解。 按照一般套路,先搞个DP预处理,设$f[i][0/1/2/3]$分别表示对于$i$位数,其中有多少个前0/1/2位为6的个数和整体中包含666的个数。那么就很容易得到以下转移方程。 $f[i][3]=f ...
分类:
其他好文 时间:
2016-10-04 18:50:20
阅读次数:
144
POJ最难数位DP?段段拆解,0ms数位树!...
分类:
其他好文 时间:
2014-09-16 23:48:01
阅读次数:
420
这题应该是POJ最强大的一道数位DP了吧 正解是AC自动机 不会 还是写数位DP吧
题目大意:我们令含有666的数字为不吉利数字,则可以得到一个递增数列:
{an}=666,1666,2666,3666,4666,5666,6660,6661,....
给定n,求an
首先我们把这个问题转化成另一个问题:给定n,求1~n中有多少个数含有666
解决了这个问题,把原问题二分答案即可
首先...
分类:
其他好文 时间:
2014-09-16 17:28:00
阅读次数:
243