![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数位DP
Facico
生命是闪耀的此刻,不是过程,就像芳香不需要道路一样。
展开
-
【GDKOI2016】QT与泰剧Code&Details
Details如果会打数位DP,就没有细节了。 如果运用了前缀和思想就不用打上下界的了。我调了很久才发现我上下不对称,晕+_+ 我们知道3的个数是(s-t)/3,如果喜欢可以打个高精度。 不过,其实可以用逆元做。 发现是整除,所以不能直接用逆元。 s−t3=(s−t)−(s−t)mod33{s-t\over 3}={(s-t)-(s-t) mod 3\over 3} 那么可以计算出pan原创 2016-03-04 21:51:32 · 1139 阅读 · 0 评论 -
【SDOI2014】数数
【SDOI2014】数数Description 计算不大于N且不包含S中的数的个数。Solution 首先计算一个不大于N的数,而且还有一些限制,很明显就是数位DP。一个字符串在另一个字符串集合中操作,很容易想到AC自动机。 如果要做DP,首先有一个i表示从高位到低位,做到第i位。要在AC自动机中匹配,还要加一个j,表示当前在AC自动机中节点为j。然后还要一个经典,0或1,表示当前数位小原创 2016-01-28 15:52:11 · 1081 阅读 · 0 评论 -
GDKOI总结
GDKOI总结 Day 1: Problem 1 要维护所有连续子段xor的和,支持修改,很明显是线段树。我开始打了棵维护连续xor的线段树a1和维护a1的线段树a2,由于打的十分暴力,交上去只有30分。用十棵线段树来维护每一位的0和1的个数就能100。比赛是没想到,打只有30分的方法浪费了很多时间。 Problem 2 这道题用全排列暴力只有20分。原创 2016-02-23 18:54:11 · 1259 阅读 · 0 评论 -
【NOIP模拟】计数
DescriptionSolution还以为是数位DP呢,实际上还是数位DP,最简单的数位DP。 设f[i,0]和f[i,1]表示到当前第i位,取0和不取0的方案数,转移很显然f[i,0]=f[i-1,1],f[i,1]=(f[i-1,0]+f[i-1,1])*(k-1)。 但是直接做会爆,要打高精度。 十分的水……Code#include<iostream> #include<cstdio>原创 2016-07-15 19:29:50 · 757 阅读 · 0 评论 -
【NOIP模拟】我的快乐时代
DescriptionSolution分类细节太多了,比赛时搞不出来。 很容易想到用r的答案减去l-1的答案。 然后也很容易想到枚举两个位置i和j来计算,其余位置出现的数的情况。 计算出现的数的情况有两种方法,一个是数位DP(比较好打),另一个是直接算。 我打的是直接算,搞了我好久。 首先先把奇数串中间的自己成自己的情况给搞出来。 假如i是奇数串的中间那个,那么串的长度就是2*i-1,那原创 2016-09-24 17:48:41 · 749 阅读 · 0 评论 -
【51Nod算法马拉松18 B】非010串
Description如果一个01字符串满足不存在010这样的子串,那么称它为非010串。 求长度为n的非010串的个数。(对1e9+7取模)Solution最喜欢签到题了。 设f[i][j]f[i][j]表示到第i个点,末尾的状态是j(01,00,10,11四个状态),转移很显然。 然后在转成矩阵乘法就好了。Code#include<iostream> #include<cstdio> #i原创 2016-09-25 09:50:01 · 694 阅读 · 0 评论 -
【NOIP2014八校联考第1场第2试9.21】大水题(water)
Descriptiondzy 定义一个n^2 位的数的生成矩阵A 为一个大小为n*n 且Aij 为这个数的第i*n+j-n位的矩阵。 现在dzy 有一个数n^2 位的数k,他想知道所有小于等于k 的数的n*n 生成矩阵有多少种。(如果不足n^2 位则补前缀零)Solution其实题意转化一下就是在k里面找到所有的要求的数的个数(如果翻转过来也存在,那么只算一次) 我们正难则反。 设f(i)为i原创 2017-01-17 21:05:04 · 868 阅读 · 0 评论 -
【JZOJ5330】【NOIP提高组模拟】密码(库默尔定理、数位DP)
DescriptionSolution这题和[51Nod 1569二项式系数的个数]是用一道题。 就是要求Cmn|pkC_{n}^m|p^k 根据库默尔定理,CmnC_{n}^m中p的次幂数就是n+m(加法)在p进制下的进位次数。 那么题意就变成了选小于等于n的两个数,在p进制下的进位次数为k。 知道这个之后我们就可以数位DP。 我们设f[i][j][k][l]表示做到第i为,进位次数为j原创 2017-08-23 22:24:42 · 1528 阅读 · 0 评论