随笔分类 -  DP-数位DP

摘要:统计$[L,R]$内LIS长度为$k$的数的个数,$Q \le 10000,L,R < 2^{63}-1,k \le 10$。 首先肯定是数位DP。然后考虑怎么做这个dp。如果把$k$记录到状态里没有用。需要找到有效方法统一的表示前面填好的数的特点方便之后的填数。 回顾LIS过程,当前数结尾的LIS 阅读全文
posted @ 2019-09-17 18:00 Ametsuji_akiya 阅读(275) 评论(0) 推荐(0)
摘要:这题面什么垃圾玩意儿 首先看到问题格式想到数位DP,但是求的是平方和。尝试用数位DP推出。 先尝试拼出和。设$f[len][sum][mod]$表示填到$len$位,已填位置数位和$sum$,数字取余为$mod$时候的方案数,$g[len][sum][mod]$表示在这种情况下的所有满足要求的数的和 阅读全文
posted @ 2019-09-17 18:00 Ametsuji_akiya 阅读(264) 评论(0) 推荐(0)
摘要:数 位 D P 开 long long 首先第一问是转化。 于是就可以二进制下DP了。 第二问是递推,假设最后$n-1$个01位的填法设为$f[i-1]$(方案包括0),于是有fib数列递推关系(很好推),然后矩阵快速幂即可。 一开始思路有点乱,导致边界初始化屡次出错。 WA1:见标题赤字。 WA2 阅读全文
posted @ 2019-09-17 18:00 Ametsuji_akiya 阅读(141) 评论(0) 推荐(0)
摘要:地址 拆成2进制位做dp记搜就行了,带一下前导0,将0和1的个数带到状态里面,每种0和1的个数讨论一下,累加即可。 WA记录:line29。 阅读全文
posted @ 2019-04-08 16:59 Ametsuji_akiya 阅读(111) 评论(0) 推荐(0)
摘要:求给定区间内满足有三个相邻位数字相同且不同时出现8和4两个数字条件的数的个数。 比较简单的做法:记录前两位的数,和有没有之前高位有没有产生过3连位数字相同,以及之前8和4的出现情况,$f[len][if8][if4][pre1][pre2][exist]$。(个人辅助理解:之前一直不明白为什么记录前 阅读全文
posted @ 2019-04-08 16:54 Ametsuji_akiya 阅读(156) 评论(0) 推荐(0)
摘要:求出[a,b]中各位数字之和能整除原数的数的个数。 有困难的一道题。被迫看了题解:枚举每一个各位数字的和($<=162$),设计状态$f[len][sum][rest]$表示dp后面$len$位,要求这剩下的和是$sum$,并且其对$sum$取模是$rest$的方案数。 感觉也讲不出什么道理来,真的 阅读全文
posted @ 2019-04-08 09:19 Ametsuji_akiya 阅读(144) 评论(0) 推荐(0)
摘要:数位中出现至少3个连续的'6'的数字(称魔鬼数),询问满足要求的排名k的数。 经典题型。采用试填法。 递推做法:预处理出$i$位数字中满足要求的数(下记为'魔鬼数')。对每一位都从0到9试一遍,然而卡在了试填时试到6这个数时该怎么办,不太会做。然后才知道可以记录填到目前的上一位已有多少个连续的6,这 阅读全文
posted @ 2019-03-19 22:09 Ametsuji_akiya 阅读(152) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-03-12 21:42 Ametsuji_akiya 阅读(27) 评论(0) 推荐(0)