题目:https://vjudge.net/problem/UVA-11361


思路:数位dp,用记忆化搜索写,dp[pos][i][j][limit] 代表剩余有pos位,每位上的数字和模k 等于i, 当前总数值模k等于j,limit代表限制位。
本题还要注意的是当k》100时 答案为0,要加个特判,不然k=100000会导致内存不够。

代码(含注释):

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define re register
#define lson rt<<1
#define rson rt<<1|1
#define lowbit(a) ((a)&-(a))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define fi first
#define rep(i,n) for(int i=0;(i)<(n);i++)
#define rep1(i,n) for(int i=1;(i)<=(n);i++)
#define se secondusing namespace std;
typedef long long  ll;
typedef unsigned long long  ull;
typedef pair<int,int > pii;
int dx[4]= {-1,1,0,0},dy[4]= {0,0,1,-1};
const ll mod=1000000000;
const ll N =1e5+10;
const double eps = 1e-4;
const double pi=acos(-1);
ll gcd(int a,int b){return !b?a:gcd(b,a%b);}
ll dp[20][100][11000][5];
int sum[100];
int l,r,k;
int idx;
ll dfs(int pos,int i,int j,int limit)
{if(pos==0){if(i==0&&j==0)//两者都成立时 才找到一个答案return 1;return 0;}if(dp[pos][i][j][limit]>=0) return dp[pos][i][j][limit];//之前已经搜过了ll ans=0;for(int q=0;q<(limit?sum[pos]:10);q++){ans+=dfs(pos-1,(i+q)%k,(j*10+q*)%k,0);//pos位的数比sum【pos】小,下一位没有limit}if(limit)//有limit时pos位选择最大的那个,下一位也应该有limit{ans+=dfs(pos-1,(sum[pos]+i)%k,(j*10+sum[pos])%k,1);}return  dp[pos][i][j][limit]=ans;
}
ll work(int x)//把每一位上的数字保存起来
{idx=0;while(x>0){sum[++idx]=x%10;x/=10;}return dfs(idx,0,0,1);
}
void slove()
{cin>>l>>r>>k;if(k>100) {//大于100时直接输出cout<<0<<endl;return;}FILL(dp,-1);cout<<work(r)-work(l-1)<<endl;//经典算法了,两前缀相减等于区间和。// cout<<fixed<<setprecision(7)<<dp[n]<<endl;
}
int main()
{iosint t=1;cin>>t;fun();while(t--){slove();}return 0;
}

UVA - 11361 Investigating Div-Sum Property(数位dp/记忆化搜索板子)相关推荐

  1. bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)

    1833: [ZJOI2010]count 数字计数 题目:传送门 题解: 今天是躲不开各种恶心DP了??? %爆靖大佬啊!!! 据说是数位DP裸题...emmm学吧学吧 感觉记忆化搜索特别强: 定义 ...

  2. 数位dp 记忆化搜索java_hdu 5787 数位dp,记忆化搜索

    题意:求区间[l,r]内有多少个数符合,这个数的任意的相邻k位数(digits),这k个数都两两不相等 l,r范围是1~1e18,k是2~5 思路:数位DP,因为K<=5,我们最多需要保存下来当 ...

  3. UVA 1220 Party at Hali-Bula (树状DP+记忆化搜索)

    Dear Contestant, I'm going to have a party at my villa at Hali-Bula to celebrate my retirement from ...

  4. HDU 4352 XHXJ's LIS(*数位DP 记忆化搜索 待整理)

    XHXJ's LIS HDU - 4352 #define xhxj (Xin Hang senior sister(学姐))  If you do not know xhxj, then caref ...

  5. 思维dp ---- Codeforces Round #711 (Div. 2) - C. Planar Reflections[dp/记忆化搜索]

    题目链接 题目大意: 就是给你n个平面和一个寿命为k的衰变粒子.开始粒子从左向右飞行,粒子每经过一个平面就会产生一个副本粒子,这个副本粒子比原粒子的寿命少1,即为k-1,并且飞行方向是原粒子的反方向. ...

  6. BZOJ1415 [Noi2005]聪聪和可可 【SPFA + 期望dp记忆化搜索】

    题目 输入格式 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...

  7. pku 1191 棋盘分割 DP / 记忆化搜索

    http://poj.org/problem?id=1191 题意:中文省略. 思路:黑说p116有讲解, 主要的状态转移方程为 横着切: dp[k][x1][y1][x2][y2]  = min(d ...

  8. [蓝桥杯][算法提高VIP]Sharing Chocolate(状压dp记忆化搜索)

    题目描述 每天,巧克力在它的许多形式上被全世界数百万人分享.它是一个真正普遍的糖果,实际上在世界上每个国家都能得到. 你发现唯一比吃巧克力更好的事情是把它分享给朋友.不幸的是,你的朋友非常挑剔,有着不 ...

  9. 蓝桥杯 乘积最大(区间dp+记忆化搜索)

    问题描述 今年是国际数学联盟确定的"2000--世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一 ...

最新文章

  1. 实现搜索框记录搜索历史_三个案例告诉你:“搜索框”该如何设计?
  2. 微信小程序之后台https域名绑定以及免费的https证书申请
  3. Jmeter使用指南
  4. android圆角ImageView的几种实现方式
  5. POJ3481(待完善版本,请看注释)
  6. Mycat关键特性,什么是MYCAT,MYCAT监控,版本架构,长期规划2.0,Mycat高可用方案
  7. LoadRunner常遇见的问题
  8. node环境变量_实际使用Node环境变量的方法如下
  9. nodejs的事件处理机制
  10. 来点干货 | Android 常见内存泄漏与优化(二)
  11. 在服务器上导出dmp文件,远程在服务器上导出dmp文件
  12. zynq阅读文档之通过中断读GPIO输入的编程指导
  13. node-amqp 使用fanout发布订阅rabbitmq消息
  14. 九度 1526:朋友圈(并查集)
  15. jmteter 参数提取器-使用正则表达式来提取数据
  16. [FAQ10908][Message]开启固定拨号FDN功能(无法发短信的原因),发送信息时如何做FDN check
  17. ubuntu阿里云盘(小白羊)
  18. 安卓6.0系统一键激活XPOSED框架的方法
  19. win10未启动对远程服务器启动,win10系统连接远程提示未启用对服务器的远程访问的操作技巧...
  20. 上海航芯|物联网安全芯片ACL16简介

热门文章

  1. sv队列和动态数组的区别_Go 刷 LeetCode 系列:经典(7) 设计双端队列
  2. java 数组长度 可变_java基础之集合长度可变的实现原理
  3. html插入图片和文字,HTML第三课文字图片插入
  4. bigint在java中用什么表示_为什么说开车最能看出一个人的人品和情商?这几条说的太精辟了...
  5. c语言基类型,C语言基本类型边界值
  6. linux系统中常见的目录,Linux系统中常见的目录名称以及相应内容
  7. harmonyos con,鸿蒙HarmonyOS系统中的JS开发框架
  8. html点击按钮计算两个输入框的和_小程序计算报价功能介绍
  9. 计算机函数公式中怎么合并合并,Excel用函数和公式瞬间实现把表格全部合并到一个表中去...
  10. matlab调用时间序列工具箱,matlab时间序列工具箱