【HDOJ 3652】B-number
给一整数n 找<=n的整数中能被13整除且含有13的 数位dp 记忆化!
。
一入记忆化深似海。
。。再也不想用递推了。。。发现真的非常好想 仅仅要保证满足条件把未选高位(即能任意挑数的)记录下来 不断搜索递归即可
代码例如以下:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int dp[10][13][3];
int digit[10];
/*
hs =
0 无13
1 无13 前位为1
2 出现13
mod表示高位取余后的结果 遍历完后mod == 0说名能被13整除 按位取余
*/
int dfs(int pos,int mod,int hs,bool high)
{
if(pos == -1) return hs == 2 && !mod;
if(!high && ~dp[pos][mod][hs]) return dp[pos][mod][hs];
int i,en,ans = 0,nhs,nmd;
en = high? digit[pos]: 9;
for(i = 0; i <= en; ++i)
{
nmd = (mod*10+i)%13;
nhs = hs;
if(nhs == 1 && i == 3) nhs = 2;
else if(nhs != 2) nhs = (i == 1)? 1: 0;
ans += dfs(pos-1,nmd,nhs,high && i == en);
}
if(!high) dp[pos][mod][hs] = ans;
return ans;
}
int Solve(int x)
{
int len = 0;
while(x)
{
digit[len++] = x%10;
x /= 10;
}
return dfs(len-1,0,0,1);
}
int main()
{
memset(dp,-1,sizeof(dp));
int n;
while(~scanf("%d",&n)) printf("%d\n",Solve(n));
return 0;
}
【HDOJ 3652】B-number的更多相关文章
- 【HDOJ 5654】 xiaoxin and his watermelon candy(离线+树状数组)
pid=5654">[HDOJ 5654] xiaoxin and his watermelon candy(离线+树状数组) xiaoxin and his watermelon c ...
- 【HDOJ 5379】 Mahjong tree
[HDOJ 5379] Mahjong tree 往一颗树上标号 要求同一父亲节点的节点们标号连续 同一子树的节点们标号连续 问一共同拥有几种标法 画了一画 发现标号有二叉树的感觉 初始标号1~n 根 ...
- 【HDOJ 2089】不要62
[HDOJ 2089]不要62 第一个数位dp的题 做的老困难了...只是好歹是做出来了 迈出了第一步.. 对大牛来说这样的题都是小case ps:新上一个记忆化方法 一些绕弯的题里用dfs好想些 代 ...
- 【HDOJ 5371】 Hotaru's problem
[HDOJ 5371] Hotaru's problem Manacher算法+穷举/set Manacher算法一好文:http://blog.csdn.net/yzl_rex/article/de ...
- 【HDOJ 5399】Too Simple
pid=5399">[HDOJ 5399]Too Simple 函数映射问题 给出m函数 里面有0~m个函数未知(-1) 问要求最后1~n分别相应仍映射1~n 有几种函数写法(已给定的 ...
- 【HDOJ 5419】 Victor and Toys (排列组合)
[HDOJ 5419] Victor and Toys n个玩具 m个区间 每一个玩具有一个beauty值 问任选三个区间 三区间的MINleft~MAXright的和的期望值 预处理一个数组 存放每 ...
- 【HDOJ 2255】奔小康赚大钱(KM算法)
[HDOJ 2255]奔小康赚大钱(KM算法) 奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- 【HDOJ 1009】 CRB and String
[HDOJ 1009] CRB and String 每组两个串s t 仅仅由小写字母组成 问从s能不能变成t 改变的操作为选一个字符 在后面加上一个与所选字符不同的字符 这样的操作能够做无数次 问能 ...
- 【HDOJ 2063】过山车
[HDOJ 2063]过山车 二分图最大匹配模板题 1女对n男 问匹配最大对数 代码例如以下: #include <iostream> #include <cstdlib> # ...
随机推荐
- 洛谷——P4109 [HEOI2015]定价
P4109 [HEOI2015]定价 模拟(有点儿贪心) 题目要求在区间$l,r$中$x$后导0尽量多,且除去后导0之外,最后一个数尽量是$5$才最优 从$l$到$r$依次考虑, 假设当前考虑到$50 ...
- html/css:简单网页
html: <!DOCTYPE html> <html> <head> <meta http-equiv=“content-type” content=“te ...
- tiny4412u-boot烧写及根文件系统制作(不进入终端问题)
http://m.blog.csdn.net/article/details?id=51400196(转) VMware12 环境:ubuntu12.4 开发板:tiny4412 首先烧写bootlo ...
- Android开发——流量统计
1. 获取应用UID 在设备的proc目录下我们可以看到一些比较熟悉的目录/文件,比如data,system,cpuinfo(获取CPU信息)等,其中uid_stat的各个以应用Uid命名的目录下,便 ...
- 【07】Firebug监控网络情况
[07] Firebug监控网络情况 Firebug可以监控网页中每个文件加载的时间. 打开Firebug.点击"网络",然后确定已经启用,重新载入当前页面.Firebug显示如下 ...
- luogu1494 [国家集训队]小Z的袜子
#include <algorithm> #include <iostream> #include <cstdio> #include <cmath> ...
- 关于构造函数什么值传递给他的实例,只有this和prototype
var a= function (){var bb = 12; this.aa ="xxx"}; a.aa="www"; a.prototype.cc=&quo ...
- 在JavaScript中获取Map集合中的key和value值(前提是:既不知道key为什么值,也不知道value有哪些值)
- jquery怎么获得ul中li的个数
- CSU1030素数槽
Description 处于相邻的两个素数p和p + n之间的n - 1个连续的合数所组成的序列我们将其称为长度为n的素数槽.例如,‹24, 25, 26, 27, 28›是处于素数23和素数29之间 ...