题目链接 小Z的 k 紧凑数 解题思路 数位DP,把每一个数位的每一个数对应的可能性表示出来,然后求\(num(1,r)-num(1,l-1)\),其中\(num(i,j)\)表示\([i,j]\)区间里符合要求的数的个数. 其中,\(dp[i][j]\)表示第\(i\)位数字为\(j\)的选择种数. 计算的时候,比如\(num(456)\),就拆开为\(num(1,99)+num(100,399)+num(400,449)+num(450,455)+num(456,456)\) AC代码 #i…
P2188 小Z的 k 紧凑数 题目描述 小 Z 在草稿纸上列出了很多数,他觉得相邻两位数字差的绝对值不超过 k 的整数特别奇特,称其为 k 紧凑数. 现在小 Z 想知道 [l,r] 内有多少个 k 紧凑数,希望你帮帮他. 输入输出格式 输入格式: 第一行包含三个整数 l,r,k. 输出格式: 第一行包含一个整数,表示 [l,r] 内 k 紧凑数的个数. 输入输出样例 输入样例#1: 1 13 1 输出样例#1: 12 说明 [数据规模] 对于 30% 的数据,r − l ≤ 10^5: 对于另…
题目链接 https://www.luogu.org/problemnew/show/P2657 分析 第一道数位DP题,发现有点意思 DP求\([L,R]\)区间内的XXX个数,很套路地想到前缀和,先求\([1,R],[1,L]\)相减就好了 状态转移也明确,发现状态只和上一位数位的数有关,\(f[i][j]\)表示第\(i\)位放\(j\)的话有多少个windy数,注意的这里的windy数是在钦定一个数字最高位是多少情况下所有的windy数的数量和(即[1,i-1]位放数情况都被算了一遍)…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4352 题目大意: 求区间 \([L,R]\) 范围内最长上升子序列(Longest increasing subsequence,简称LIS)长度为 \(k\) 的数的数量. 举个例子: \(123\) 的LIS只有一个\(123\),所以它的LIS的长度是 \(3\): \(101\) 的LIS只有一个\(01\),所以它的LIS的长度是 \(2\): \(132\) 的LIS有\(13\)和\(…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5179 题目大意: 给你一个数 \(A = a_1a_2 \cdots a_n\) ,我们称 \(A\) 为"漂亮的数"当且仅当 \(a[i] \ge a[i+1]\) (\(1 \le i \lt n\)) 并且 \(a[i]\) mod \(a[j] = 0\) (\(1 \le i \lt n, i \lt j \le n\)),比如 \(931\) 就是一个漂亮的数. 求区间 \([…
题目链接: (请自行百度进Ural然后查看题号为1057的那道题目囧~) 题目大意: Create a code to determine the amount of integers, lying in the set \([X;Y]\) and being a sum of exactly \(K\) different integer degrees of B. Example. Let \(X=15, Y=20, K=2, B=2\) . By this example 3 number…
一.题意 给定一个区间[a, b](注意输入的时候可能a > b,所以,在数据输入后,要先比较a和b,如果a > b,交换a和b的值),统计这个区间里面,数位上有多少个0.多少个1.--.多少个9. 二.思路 第一种:数位DP.dfs函数的参数列表为: int pos:当前处理的数位所在的位置: int val:当前统计的数值(0--9): int amt:从最高位开始到当前位置的前一个位置(因为当前位置还没开始统计),val的数量. bool lead:是否有前导0.因为这题要统计0的个数,…
题目链接:https://www.luogu.com.cn/problem/P2602 题目大意: 计算区间 \([L,R]\) 范围内 \(0 \sim 9\) 各出现了多少次? 解题思路: 使用 数位DP 进行求解. 定义一个结构体数组 \(f[pos][all0]\) 表示满足如下条件时 \(0 \sim 9\) 出现的次数: 当前所在数位为第 \(pos\) 位: \(all0\) 为 \(1\) 表示当前状态之前一直都是前置 \(0\) ,为 \(0\) 表示前面的数位上面出现过不为…
题目链接:https://www.luogu.com.cn/problem/P3413 题目大意: 定义萌数指:满足"存在长度至少为2的回文子串"的数. 求区间 \([L,R]\) 范围内萌数的数量. 解题思路: 使用 数位DP 进行求解. 定义状态 \(f[pos][p1][p2]\) 表示满足如下条件时的方案数: 当期数位在第 \(pos\) 位: 前面那个数的前面那个数是 \(p1\): 前面那个数是 \(p2\). 则可以开函数 dfs(int pos, int p1, int…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3886 题目大意: 给一定区间 \([A,B]\) ,一串由 /, \ , - 组成的符号串.求满足符号串要求的数字个数. 要求如下: / 表示数字从左到右递增: \ 表示数字从左到右递减: - 表示数字从左到右相等. 第一状态 \(f[pos][id][pre][all0]\) 表示当前处在如下情况下的方案数: 当前所在数位为 pos 位: 当前数位对应字符串 s 的第 id 个元素 s[id]:…