题目链接[kuangbin带你飞]专题十五 数位DP G - B-number

题意

求1~n的范围里含有13且能被13整除的数字的个数。

思路

首先,了解这样一个式子:a%m == ((b%m)*c+d)%m;

式子的正确是显然的。就不证明了。

那么推断数能否够被13整除就能够分解为一位一位进行处理。

当然。我们也仅仅须要储存取余后的值。

dfs(len, num, mod, flag)

mod记录数字对13取余后的值

len表示当前位数

num==0 不含13且上一位不为1

pre==1 不含13且上一位为1

pre==2 含13

flag表示能否够随意取值(推断范围)。

如此,记忆化搜索就可以得解。

代码

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <vector>

using namespace std;

#define LL long long
#define MOD 13
LL dp[20][3][13];
int dis[20];

LL dfs(int len, int type, int mod, bool flag)
{
if(len < 0)
return type == 2 && mod == 0;
if(!flag && dp[len][type][mod]!=-1)
return dp[len][type][mod];
int end = flag?

dis[len]:9;
int ans = 0;
for(int i=0; i<=end; i++)
{
if(type == 2 || (type == 1 && i == 3))
ans += dfs(len-1, 2, (mod*10+i)%MOD, flag&&i==end);
else
ans += dfs(len-1, i==1?1:0, (mod*10+i)%MOD, flag&&i==end);
}
if(!flag)
dp[len][type][mod] = ans;
return ans;
}

LL solve(LL n)
{
int len = 0;
while(n)
{
dis[len++] = n%10;
n /= 10;
}
return dfs(len-1, 0, 0, 1);
}

int main()
{
int n;
memset(dp, -1, sizeof(dp));

posted @
2017-06-20 08:10 
yangykaifa 
阅读(...) 
评论(...) 
编辑 
收藏

HDU 3652 B-number(数位dp&amp;记忆化搜索)的更多相关文章

  1. HDU 2089 不要62(数位DP&#183;记忆化搜索)

    题意  中文 最基础的数位DP  这题好像也能够直接暴力来做   令dp[i][j]表示以 j 开头的 i 位数有多少个满足条件 那么非常easy有状态转移方程 dp[i][j] = sum{ dp[ ...

  2. HDU 4597 Play Game (DP,记忆化搜索)

    Play Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total S ...

  3. 洛谷P2657 [SCOI2009]windy数 [数位DP,记忆化搜索]

    题目传送门 windy数 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个win ...

  4. POJ 3252 Round Numbers(数位dp&amp;记忆化搜索)

    题目链接:[kuangbin带你飞]专题十五 数位DP E - Round Numbers 题意 给定区间.求转化为二进制后当中0比1多或相等的数字的个数. 思路 将数字转化为二进制进行数位dp,由于 ...

  5. poj1179 区间dp(记忆化搜索写法)有巨坑!

    http://poj.org/problem?id=1179 Description Polygon is a game for one player that starts on a polygon ...

  6. 蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索

    问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...

  7. 【bzoj1415】【聪聪和可可】期望dp(记忆化搜索)+最短路

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=57148470 Descrition 首先很明显是 ...

  8. 二进制数(dp,记忆化搜索)

    二进制数(dp,记忆化搜索) 给定k个<=1e6的正整数x(k不大于10),问最小的,能被x整除且只由01组成的数. 首先,dp很好写.用\(f[i][j]\)表示i位01串,模ki的值是j的数 ...

  9. HDU 1208 Pascal's Travels 经典 跳格子的方案数 (dp或者记忆化搜索)

    Pascal's Travels Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Su ...

随机推荐

  1. Spring IOC过程

    https://www.processon.com/diagraming/5c96171fe4b0f88919b98497 1. AbstractApplicationContext:执行refres ...

  2. angular-表格

    ng-repeat 指令可以完美的显示表格. <div ng-app="myApp" ng-controller="customersCtrl"> ...

  3. cogs 466. [NOIP2009] 细胞分裂

    466. [NOIP2009] 细胞分裂 ★★   输入文件:cell.in   输出文件:cell.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]    Hanks ...

  4. C++基础学习教程(三)

    承接上一讲. 2.7文件I/O 关于读写文件,C++中有一个专门的头文件<fstream>. 首先是读文件演示样例,例如以下: </pre><pre> /***** ...

  5. call to OpenGL ES API with no current context 和Fatal signal 11

    近日在用cocos2dx3.4的时候使用了JNI调用,发现一个现象 当不使用jni的时候全然正常.使用了jni后回去的全部文字都变成黑块,而且有概率程序崩溃.附带出了两个log call to Ope ...

  6. 安卓中经常使用控件遇到问题解决方法(持续更新和发现篇幅)(在textview上加一条线、待续)

    TextView设置最多显示30个字符.超过部分显示...(省略号),有人说分别设置TextView的android:signature="true",而且设置android:el ...

  7. mariadb克隆

    oracle有克隆安装,事实上mysql/mariadb相似.仅仅需简单几步就能够直接在异机直接启动. 环境: node01安装完毕的mariadb; node02一个新机器 如今将node01克隆到 ...

  8. SVG 贝塞尔曲线控制【方便设置】:贝塞尔曲线

    http://dayu.pw/svgcontrol/

  9. HD-ACM算法专攻系列(13)——How Many Fibs?

    问题描述: 源码: import java.math.BigInteger; import java.util.*; public class Main { //主函数 public static v ...

  10. TortoiseGit连接github.com

    1.下载两个软件:msysgit,TortoiseGit 2.先安装msysgit,再安装TortoiseGit,安装过程保持默认即可. 3.为了安全,我们需要使ssh key.开始菜单--Torto ...