HDU - 4734 题目大致意思:我们定义十进制数x的权值为f(x) = a(n)*2^(n-1)+a(n-1)*2(n-2)+...a(2)*2+a(1)*1,a(i)表示十进制数x中第i位的数字。 题目给出a,b,求出0~b有多少个不大于f(a)的数。 这个f(x)计算就和数位计算是一样的,就 ...
分类:
其他好文 时间:
2020-07-28 22:05:32
阅读次数:
69
数位dp模板题 #include <bits/stdc++.h> #define inf 2333333333333333 #define N 1000010 #define p(a) putchar(a) #define For(i,a,b) for(int i=a;i<=b;++i) //by ...
最后开long long过了, 心累, 摸了, 明天再写 # include <iostream> # include <cstdio> # include <cstring> # define LL long long # define MAXN 22 using namespace std; i ...
分类:
其他好文 时间:
2020-07-10 18:35:17
阅读次数:
50
题目: bzoj 1799 [Ahoi2009]self 同类分布 解析: 设 $f[loc][js][mod]$ 为第 $loc$ 位(从左往右),各位数和为 $js$ ,当前余数为 $mod$ 的数的个数 要求 $n$ 可以被各位数和整除,也就是 $n == 0 (\mod js)$ 这个题,$ ...
分类:
其他好文 时间:
2020-07-10 13:12:34
阅读次数:
60
题目大意:求$[l,r]$中各位数之和能被该数整除的数的个数。$0\leq l\leq r\leq 10^{18}$。 显然数位DP。 搜索时记录$pos$表示当前位置,$sum$表示各位数字之和,$st$表示原数,$limit$表示最高位限制。(如果有时间我会写一篇博客学习数位DP,希望不要咕咕 ...
分类:
其他好文 时间:
2020-07-09 15:18:37
阅读次数:
61
题意 给你一个数$n$,另$S(x)$表示$x$中各位数从小到大排序后的数,例如$S(120542)=12245$。 求$\sum_^n S(i)$ $1 \le n \le 10^{700}$ 传送门 思路 首先肯定是一道数位dp 考虑将某位数的贡献$x\times 10i$转化为$x$个$10i ...
分类:
其他好文 时间:
2020-07-02 21:54:30
阅读次数:
59
原题链接 https://www.luogu.com.cn/problem/P4127 题解 浅谈数位dp 昨天通过网课复习了一下数位dp,然后来做几道数位dp的题来练练手。 经典的数位dp 是要求统计符合限制的数字的个数。 一般的形式是:求区间 [ n , m ] 满足限制 f ( 1 ) 、f ...
分类:
其他好文 时间:
2020-06-27 16:06:31
阅读次数:
47
dfs实现数位DP int dfs(int d,int m1,int m2,bool fl) d:正在填从右往左第d位 m1表示数字和%k余数,m2表示该数%k余数 fl=1表示达到当前上限,0表示没限制(数位DP常规操作)…… 我一开始是从最高位开始枚举的,但是出了些问题,现在这个写法是从最低位枚 ...
分类:
其他好文 时间:
2020-06-11 19:45:26
阅读次数:
50
给定一个技能数组,再给定一些人和他们拥有的技能,求最少多少个人拥有的技能可以覆盖给定的所有技能。这道题比较容易想到用dp做,看到了技能最多只有16个,可以尝试用数位dp来做。把每个人拥有的技能转换成对应的数字,我这里是把一个人的技能直接合起来变成一个数字,可以加快运算,然后去求每个状态需要的最少人数 ...
分类:
其他好文 时间:
2020-06-10 13:26:22
阅读次数:
62
2020-05-16 18:35:01 问题描述: 我们有一组排序的数字 D,它是 {'1','2','3','4','5','6','7','8','9'} 的非空子集。(请注意,'0' 不包括在内。) 现在,我们用这些数字进行组合写数字,想用多少次就用多少次。例如 D = {'1','3','5 ...
分类:
其他好文 时间:
2020-05-16 20:50:38
阅读次数:
79