E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
数位dp
CodeForces 55D Beautiful numbers (SPOJ JZPEXT
数位DP
)
题意 求[X,Y]区间内能被其各位数(除0)均整除的数的个数。 CF 55D 有些时候因为问题的一些“整体性”而导致在按位统计的过程中不能顺便计算出某些量,所以只能在枚举到最后一位确定数字时才能计算相应的统计。 在本题中,我们无法在过程中确定到底有哪些数位,以及这个数本身,所以这些计算都要放在最后。所以首先我们需要 参数num传递当前搜索确定的数字,以及判断该数字是否能被其数位整除。而判断各位整
·
2015-11-02 17:59
codeforces
UVA 11361 Investigating Div-Sum Property (
数位DP
)
思路 就是因为当初见了这道题不会才驱使我去学
数位DP
的,当时真的是一点儿思路都没有,然后看《训练指南》上的递推方法也云里雾里。
·
2015-11-02 17:58
property
HDU 3652 B-number (
数位DP
)
题意 要求区间[1,n]范围内有多少数包含13且被13整除。 思路 包含13、且被13整除。在状态转移时,既要保存上一位的状态,又要保存之前处理的位数与13的模。 pos表示处理到当前位;mod表示之前处理的数与13的模;flag = true表示前几位出现过连续的13,更新时只需判断以前是否出现过以及当前位和上一位是否组成13即可。 当然 笔良文昌牛牛用了另一种flag状态的设计:flag =
·
2015-11-02 17:57
number
HDU 4734 F(x) ★(
数位DP
)
题意 一个整数 (A nA n-1A n-2 ... A 2A 1), 定义 F(x) = A n * 2 n-1 + A n-1 * 2 n-2 + ... + A 2 * 2 + A 1 * 1,求[0..B]内有多少数使得F(x) <= F(A)。多组数据,T <= 1
·
2015-11-02 17:51
HDU
HDU 4352 XHXJ's LIS ★(
数位DP
)
题意 求区间[L,R]内满足各位数构成的数列的最长上升子序列长度为K的数的个数。 思路 一开始的思路是枚举数位,最后判断LIS长度。但是这样的话需要全局数组存枚举的各位数字,同时dp数组的区间唯一性也被破坏了(我不知道MYQ10那题怎么被我用这种方法做对的。。。) 看了题解后发现了二进制缩位处理LIS的巧妙方法~~ 我们用一个长10位的二进制数state表示0~9之前是否出现过,而更新的时候也需
·
2015-11-02 17:42
HDU
SPOJ MYQ10 (
数位DP
)
题意 询问区间[a,b]中的Mirror Number的个数,其中Mirror Number是指把它横着翻转后还能表示同样的数字。 思路 注意这个可不是回文数。。除了0,1,8,别的数字 翻转过后就不是数字了。所以策略就是记忆化按位搜索,每位只搜0,1,8,最后再判断是否回文,统计即可。这个判断回文是个小麻烦,因为它需要和前面的位相比较,所以用一个全局数组tmp[]表示枚举的每位的数字。 回过头来
·
2015-11-02 17:41
poj
ZOJ 2599 Graduated Lexicographical Ordering ★(
数位DP
)
求数字K的排名,变相得看就是求[1,N]中小于K的数的个数,
数位DP
统计下即可(记忆化搜索方式,dfs()过程):pos表示处理的位置;dig_sum表示当前枚举的数位和;隐藏的全局比较对象k_su
·
2015-11-02 17:40
order
SPOJ BALNUM ★(位压缩状态+
数位DP
)
题意 求区间[A,B]上的平衡数个数。平衡数是这样的数:在数的各个位上,奇数数字出现偶数次,偶数数字出现奇数次。 思路 很明显我们需要记录每一位出现的次数。分别记录是不明智的,而我们又只需要记录奇数次或者偶数次即可。所以我们可以用一个<=1024的数state表示0~9这10个数字出现的次数奇偶性,当奇数出现偶数次则相应位为1,当偶数出现奇数次相应位为1,最后判断是不是1023。但是这样
·
2015-11-02 17:39
poj
SPOJ KPSUM ★(
数位DP
)
思路 花了一上午时间调BUG……必须承认SPOJ上的好题很多~每次做都有很大收获…… 我发现原来记忆化搜索的
数位DP
不止可以做统计,还可以做计算 。 我们应该把记忆化搜索形式的
数位DP
理解成一种
·
2015-11-02 17:38
poj
BZOJ 1026 windy数 (
数位DP
)
题意 区间[A,B]上,总共有多少个不含前导零且相邻两个数字之差至少为2的正整数? 思路 状态设计非常简单,只需要pos、limit和一个前驱数pre就可以了,每次枚举当前位时判断是否与上一位相差2即可。一个需要注意的地方是第一位不用比较,所以我们还需要一个flag标志记录当前pos位是不是第一位。 代码 [cpp] #include <iostream> #includ
·
2015-11-02 17:38
ZOJ
CodeForces 55D Beautiful numbers (SPOJ JZPEXT
数位DP
)
题意 求[X,Y]区间内能被其各位数(除0)均整除的数的个数。 CF 55D 有些时候因为问题的一些“整体性”而导致在按位统计的过程中不能顺便计算出某些量,所以只能在枚举到最后一位确定数字时才能计算相应的统计。 在本题中,我们无法在过程中确定到底有哪些数位,以及这个数本身,所以这些计算都要放在最后。所以首先我们需要 参数num传递当前搜索确定的数字,以及判断该数字是否能被其数位整除。而判断各位整
·
2015-11-02 17:37
codeforces
HDU 3709 Balanced Number (
数位DP
)
思路 外层枚举平衡点,然后
数位DP
即可。
·
2015-11-02 17:36
number
UVA 11361 Investigating Div-Sum Property (
数位DP
)
思路 就是因为当初见了这道题不会才驱使我去学
数位DP
的,当时真的是一点儿思路都没有,然后看《训练指南》上的递推方法也云里雾里。
·
2015-11-02 17:35
property
HDU 3652 B-number (
数位DP
)
题意 要求区间[1,n]范围内有多少数包含13且被13整除。 思路 包含13、且被13整除。在状态转移时,既要保存上一位的状态,又要保存之前处理的位数与13的模。 pos表示处理到当前位;mod表示之前处理的数与13的模;flag = true表示前几位出现过连续的13,更新时只需判断以前是否出现过以及当前位和上一位是否组成13即可。 当然 笔良文昌牛牛用了另一种flag状态的设计:flag =
·
2015-11-02 17:35
number
[zoj 3416/hdu 3709]
数位DP
题意:求从区间[L, R]内有多少个数是平衡数,平衡数是指以10进制的某一位为中心轴,左右两边的每一位到中心轴的距离乘上数位上的值的和相等。0<=L<=R<=1e18 思路:由于任何非0正数最多只有1个位置作为中心轴使得它是平衡数。于是可以按中心轴的位置分类统计答案。令dp[p][i][j]表示中心轴在p位(p>=0)前i位且左边比右边的加权和已经多j的方案数,枚举当前第
·
2015-11-02 16:02
HDU
数位dp
——统计'1'的个数
今天去牛客网看了看 包含一 这道题,一开始没看清,以为它要统计 1~n 所有数中数字 '1' 出现的总次数,也就是说,若 n == 11,则 ans = 4;而按照题目的原意 ans 应该为 3。看错题意后还是挣扎了好久,具体的调试过程也不想回忆叙述了,先贴上按照我一开始理解的意思的代码吧,虽然没有题目让我测,但我和自己写的暴力法对拍过,应该没问题的。 1 #i
·
2015-11-02 15:07
dp
hdu 3555 Bomb 炸弹(
数位DP
)
思路:
数位DP
。2^64也顶多是十进制的20多位,那么按十进制位来分析更简单。如果能计算1,2,3,4...位十进制数中分别有多少个含49的,那么计算就简单了。
·
2015-11-02 11:24
HDU
bnu 4359(
数位dp
)
题目链接:http://gnu.bnu.edu.cn/contest/problem_show.php?pid=4359 思路:直接递推就可以了,dp[i][0]表示前i位不含4或者13,且最后一位不为1的个数,dp[i][1]表示前i位不含4或者13,最后一位为1的个数;于是有dp[i][0]=8*dp[i-1][0]+7*dp[i-1][1],dp[i][1]=dp[i-1][0]+dp[i
·
2015-11-02 11:33
dp
数位dp
题目链接:http://acdreamoj.sinaapp.com/problem.php?id=1083 没什么好说的,具体看代码吧。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 using namesp
·
2015-11-02 11:19
dp
HDU2089
//
数位dp
,恶心到爆!!!//要多练!!
·
2015-11-01 15:48
HDU
初探
数位DP
-hdu2089
一开始刷dp就遇到了
数位dp
,以前程序设计艺术上看过一点,基本没懂,于是趁今天遇到题目,想把它搞会,但就目前状态来看仍然是似懂非懂啊,以后还要反复搞 统计区间[l,r]的满足题意的数的个数,可以转换成求
·
2015-11-01 15:13
HDU
F题
Problem F Codeforces 16E 这道题是一道
数位Dp
将鱼的死活列为0两种状态然后找DP关系 •题意:有n(n<=18)条鱼,接下来的n-1天,每天会有一对鱼(a,b)相遇,每天任意一对鱼相遇的概率是相等的
·
2015-11-01 14:40
FZU_2019_Mountain Number题解
这题终于让我把
数位DP
的本质看清楚了。 http://acm.fzu.edu.cn/problem.php?
·
2015-11-01 14:48
mountain
CodeForces 55D Beautiful numbers(
数位dp
)
数位dp
,三个状态,dp[i][j][k],i状态表示位数,j状态表示各个位上数的最小公倍数,k状态表示余数 其中j共有48种状态,最大的是2520,所以状态k最多有2520个状态。
·
2015-10-31 18:37
codeforces
BZOJ3679 : 数字之积
设f[i][p2][p3][p5][p7][j][k]表示前i位,2,3,5,7的次数,前i位是否等于x,是否有数字的方案数 然后
数位DP
即可,ans=cal(r)-cal(l)
·
2015-10-31 16:26
ZOJ
BZOJ3780 : 数字统计
从低位到高位
数位DP
,f[i][j][k]表示已经填了后i位,转化的数字为j,后i位与x后i位的大小关系为k的方案数。
·
2015-10-31 16:08
ZOJ
BZOJ3329 : Xorequ
第一问: 打表可得规律:当且仅当x&(x<<1)=0时才会是解,于是
数位DP
f[i][j][k]表示二进制中前i位,上一位是j,前i位是否等于n的方案数 第二问: 打表可得规律
·
2015-10-31 16:01
ZOJ
2015 UESTC Training for Dynamic Programming H - 邱老师选妹子(
数位dp
)
H - 邱老师选妹子 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Status 邱老师长得帅这是人尽皆知,于是追他的妹子就会很多。 但是你知道,邱老师是一个很专一的人,所以他心里面只能有一个人。
·
2015-10-31 14:33
hdu 2089 不要62
数位dp
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 19640 Accepted Submission(s): 6697 Problem Des
·
2015-10-31 14:39
HDU
hdu3555
数位dp
给定一个数n,判断1-->n有多少个数字含“49” 可以用dp的方式来解决, dp[i][0] 表示长度为i,不含"49"的数字的个数 dp[i][1] 表示长度为i,第i位为数字9的个数 dp[i][2] 表示长度为i,含”49“的数字的个数 所以,dp[i][0] 的包含dp[i][1]的 状态转移方程如下: dp[i][0] = dp[i-1][0]
·
2015-10-31 12:19
HDU
hdu2089不要62(
数位dp
)
1 #include <stdio.h> 2 #include <string.h> 3 int dp[10][3]; 4 int num[10]; 5 /* 6 dp[i][0] 不含62,4 7 dp[i][1] 2开头 8 dp[i][2] 含62或4 9 */ 10 void init() 11 { 12 int i
·
2015-10-31 12:19
HDU
POJ3252:Round Numbers(
数位DP
+记忆化DFS)
Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, Paper, Stone' (also known as 'Rock, Paper, Scissors', 'Ro, Sham, Bo', and a host of other names) in
·
2015-10-31 11:17
number
Light OJ Dynamic Programming
1005 - Rooks 排列 1013 - Love Calculator LCS变形 dp[i][j][k]对于第一个字符串i 到jLCS为k的方案数 1068 - Investigation
数位
·
2015-10-31 11:40
数位DP
问题整理(一)
第一题:Amount of degrees (ural 1057) 题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1057 题意:[x,y]范围内的数,可以拆分成k个b进制的不同幂的和 的数字有多少。 我们可以将x转换成二进制来讨论。二进制转化时,找到第一个非0非1的数,将其及其后面的数都变为1. 那么问题就变成了求[0,x]范
·
2015-10-31 11:23
dp
hdu 4352
数位dp
+nlogn的LIS
题意:求区间L到R之间的数A满足A的的数位的最长递增序列的长度为K的数的个数。 链接:点我 该题的关键是记录LIS的状态,学习过nlogn解法的同学都知道,我们每次加入的元素要和前面的比对替换,这里就用了这个方法 比如1 3 6,用二进制表示为001000101,假如新加入的数为2,那么我们枚举比2大的数,观察是否存在,这里找到3,我们把3替换成2,状态变成1,2,6 不懂的童鞋可以看这里
·
2015-10-31 10:22
log
hdu 3652
数位dp
观察区数字是否含有13并且能被13整除 Sample Input 131002001000 Sample Output1 1 2 2 注意在判断新状态的时候顺序不能弄反,否则会把之前的正确状态覆盖 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #inclu
·
2015-10-31 10:22
HDU
hdu 4734
数位dp
给一个数A (十进制表示形式为AnAn-1An-2 ... A2A1,定义函数 F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1,给一个B,求B以内的i,满足F(i)<=F(A) Sample Input 3 0 100 1 10
·
2015-10-31 10:22
HDU
HDU 3271-SNIBB(
数位dp
)
题意:给一个数q, q=1时求给定区间,给定进制,各数位和等于m的数字的个数 q=2时求给定区间,给定进制,各数位和等于m的数字中的第k大的数字 分析:dp[i][sum][j],表示长度为i当前数位和是sum,进制是j的个数,q=2时用二分求出k大数 题意给的区间[x,y],x不一定小于y,给定区间没k大数,则输出 Could not find the Number! #i
·
2015-10-31 10:54
HDU
SGU 390-Tickets(
数位dp
)
题意:有标号l-r的票,要给路人发,当给的票的编号的各数位的总和(可能一个人多张票)不小k时,才开始发给下一个人,求能发多少人。 分析:这个题挺难想的,参考了一下题解,dp[i][sum][left] 长度i 当前数位和sum 前一子树剩余的和 #include <map> #include <set> #include
·
2015-10-31 10:54
dp
HDU-3555 Bomb
数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 我的DP方程:f[i][j]表示数的第i位以j开头的数含有49的个数,则状态转移方程为: 1.j!=4时: f[i][j]=sum{ f[i-1][k] | 0<=k<=9 } 2.j==4时:f[i][j]=sum{ f[i-
·
2015-10-31 10:55
HDU
ACdream 完美数
数位DP
id=1083 简单
数位DP
,貌似我写得太暴力了= = 1 //STATUS:C++_AC_20MS_1512KB 2 #include<stdio.h> 3 #include
·
2015-10-31 10:55
dp
cf55dBeautiful numbers
数位dp
想到 最小公倍数 其余的就好搞了 ,可是没想到 #include <cstdio> #include <cstring> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map&
·
2015-10-31 10:42
number
Hdu3079Balanced Number
数位dp
枚举支点,然后就搞,记录之前的点的力矩和。 #include <cstdio> #include <cstring> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map>
·
2015-10-31 10:42
number
Hdu3652B-number
数位dp
就是记个余数然后像不要62那样搞 #include <cstdio> #include <cstring> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map> #i
·
2015-10-31 10:42
number
Hdu3555Bomb
数位dp
含有49的 。。就是不要49 。。也可以直接搞 #include <cstdio> #include <cstring> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map
·
2015-10-31 10:42
HDU
Hdu4352XHXJ's LIS
数位dp
nlogn 的 最长上升子序列的求法。 用一个数的二进制位来表示哪几位有值, 每次插入的时候 ,要把在他后方位置的第一个数给删了。 设 从前到后 他是第i个数,长度为i的最长上升子序列的最后一位最小的值就是他在这个数中二进制所在的位置。 注意处理 0, 前面是0 ,是不能乱插的。 #include <cstdio> #includ
·
2015-10-31 10:42
HDU
Balanced Numbers
数位dp
三进制搞下, 0 表示没出现过, 第i位为1 表示 i出现了奇数次, 2表示i 出现了偶数次。 #include <cstdio> #include <cstring> #include <algorithm> #include <climits> #include <string> #i
·
2015-10-31 10:42
number
poj3252
数位dp
#include <cstdio> #include <cstring> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map> #include <cstdlib&
·
2015-10-31 10:41
poj
uestc250windy数
数位dp
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map>
·
2015-10-31 10:41
dp
hdu 4722 (
数位DP
)
Good Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3360 Accepted Submission(s): 1064 Pr
·
2015-10-31 10:43
HDU
上一页
26
27
28
29
30
31
32
33
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他