数位dp
GoLakerswxy
这个作者很懒,什么都没留下…
展开
-
SPOJ - BALNUM Balanced Numbers (数位dp*)
题目:奇数出现偶数次,偶数出现奇数次。光写这个dp数组写的就快睡着了。。。状态0表示这个数字没出现过,1表示出现了奇数次,2表示出现了偶数次。x和y数组统计每个不同的数字出现的次数,简单易懂。可以用三进制来表示状态,我写的与其对比起来就low了好多,效果其实是一样的。最后前导零不要忘记判断。#include <bits/stdc++.h>using namespace ...原创 2018-07-24 10:37:45 · 193 阅读 · 0 评论 -
Beautiful Numbers (数位dp)
题目:找1...n之间能被自身digits和整除的数字有多少。就是一个简单的数位dp题,一共n最大1e12我特么以为是一共12位,直接开了个wei[13]的从1开始的数组。。脑子短路了感觉,想了好长一会才看到。。。写博客提醒下自己我好菜啊#include <bits/stdc++.h>using namespace std;typedef long long ll;ll...原创 2018-08-06 09:11:13 · 281 阅读 · 0 评论 -
CodeForces - 834E 暴力枚举+数位dp
定义f(n)为数字n的十进制表示的所有非0数码组成的多重集,求 L<=n<=R 中不同的f(n)的数量。1e18内出现的所有f(n)一共最多C(27,9)种,暴力枚举每一种,然后check一下是否能组成在(L,R)区间内的数。这时候用到了数位dp。如下#include<bits/stdc++.h>using namespace std;typedef ...原创 2018-06-08 17:49:24 · 300 阅读 · 0 评论 -
CodeForces 55D Beautiful numbers(数位dp+离散化*)
题目:求一个区间内的Beautiful numbers有多少个。Beautiful numbers指:一个数能整除所有组成它的非0数字。 例如15可以被1和5整除,所以15是Beautiful numbers。好久没写数位dp了,拿过一个来果断卡住了。。。求一下1...9的lcm,对1...lcm的能作为lcm因数的数标号hash,作为一个递归的关键字,然后不断对lcm取模的sum作为第二个...原创 2018-07-22 20:28:28 · 177 阅读 · 0 评论 -
HDU - 4352 XHXJ's LIS (数位dp+状态压缩**)
题目:L到R,各位数字组成的严格上升子序列的长度为K的个数 (和LIS是一样不要求是连续的)思路:用十位二进制表示0--9出现的情况,用和O(nlogn)的LIS一样的方法进行替换更新。#include <bits/stdc++.h>using namespace std;typedef long long ll;ll A,B,dp[22][1<<10][1...原创 2018-07-22 21:17:52 · 190 阅读 · 0 评论 -
POJ - 3252 Round Numbers (数位dp)
题目:找(A,B)区间内所有的数的二进制形式中0的个数比1的个数多的数字的数量。变成二进制,dp[pos][num0][num1]表示进行到pos这个数位时0的个数为num0,1的个数为num1时的值#include <cstdio>#include<cstring>using namespace std;typedef long long ll;ll A...原创 2018-07-23 09:34:14 · 127 阅读 · 0 评论 -
HDU - 3709 Balanced Number(数位dp,注意前导零)
题目:给定区间[a,b],求区间内平衡数的个数。所谓平衡数即有一位做平衡点,左右两边数字的力矩相等。思路:dp[pos][k][sum]代表进行到pos位,以k位为平衡点时,加和为sum时的答案。#include <bits/stdc++.h>using namespace std;typedef long long ll;int t,k,wei[22];ll A,...原创 2018-07-23 10:21:22 · 526 阅读 · 0 评论 -
HDU-4734 F(x) (数位dp*)
题意:定义 F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1(其中 x = AnAn-1An-2 ... A2A1),那么给定A,B,求[0,B]区间的i,满足F(i)<=F(A);dp[pos][sum]表示跑到当前位,还剩sum值没用完时的答案。sum<0的时候一定不能忘记判断啊。。。#include <b...原创 2018-07-23 21:31:21 · 192 阅读 · 0 评论 -
HDU - 4507 恨7不成妻(数位dp**)
题目:求在一定区间内和7无关的数字的平方和。 如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关—— 1、整数中某一位是7; 2、整数的每一位加起来的和是7的整数倍; 3、这个整数是7的整数倍;基本思想是(x+y)^2=x^2+2*x*y+y^2 维护sum和sqrt_sum,以及数量cnt来确定用了几次x^2。#include <bits/stdc++...原创 2018-07-24 09:57:11 · 207 阅读 · 0 评论 -
BZOJ-1833 count 数字计数 ( 数位dp )
题目:给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。思路:数位dp,sum表示digit出现的次数,num表示有多少个数。前导0需要注意下。#include <bits/stdc++.h>using namespace std;typedef long long ll;int wei[15],k;ll a,b,ans[15...原创 2018-08-07 10:35:22 · 310 阅读 · 0 评论