hdu 数位DP汇总 + hdu 4507 题解

动态规划专题(三)——数位DP 前言 数位DPDPDP 真的是最恶心的DPDPDP。 简介 看到那种给你两个数,让你求这两个数之间符合条件的数的个数,且这两个数非常大,这样的题目一般就是 数位DPDPDP 题。 数位DPDPDP一般都用于计数。 具体实现 数位DPDPDP有两种实现方法: 个人感觉用记忆化搜索来实现要比较容易一些。 ... 阅读详情

基础教学 + 初探hdu2089题解:http://blog.youkuaiyun.com/techmonster/article/details/50273967

进阶 【重要模板】(数位dp几乎都是这个模板):http://blog.youkuaiyun.com/techmonster/article/details/50275783


数位DP  优秀题目 hdu 4507  (注意,仍是上面的模板)

利用数学方法,将平方展,然后加和。


另外还有一道数位DP 的毕业题 hdu 1633,表面看起来简单实际上考虑的非常复杂:http://blog.youkuaiyun.com/techmonster/article/details/50298937


hdu 4507 代码如下:

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MS(x,y) memset(x,y,sizeof(x))
#define pi acos(-1.0)
using namespace std;
void fre(){freopen("t.txt","r",stdin);}
typedef long long LL;
typedef unsigned long long ULL;
const int MOD = 1e9 + 7;
const int inf = (1<<63)-1;
const double eps = -(1<<30);
struct node
{
    LL ssum,sum,num;//ssum为平方和,sum为和,num为符合条件的数字个数
    node()
    {
        ssum = 0; sum = 0; num = 0;
    }
}dp[20][10][10];// 表示i位数,余数为j,各位数字和的余数为k 的状态
bool vis[20][10][10]; //表示 对应dp是否被访问
int digit[20];
LL pow10[20];
node dfs(int len,int mod,int smod,int flag)
{
    if(len == 0) //len==0 表示搜索结束
    {
        if(mod==0 || smod==0) {node a;a.ssum = a.sum = a.num = 0; return a;}
        else {node a;a.ssum = a.sum = 0; a.num = 1;return a;}
    }
    if(!flag && vis[len][mod][smod] == 1) return dp[len][mod][smod];

    int i,j,top;
    node res,ttt; 
    top = flag?digit[len]:9;
    for(i = 0; i <= top; ++i)
    {
        if(i == 7) continue;
        int _mod,_smod;
        _mod = (10*mod + i)%7;
        _smod = (smod + i)%7;
        ttt = dfs(len-1,_mod,_smod,flag&&top==i);
        LL tem = i*pow10[len-1]%MOD;
        res.num =(res.num + ttt.num)%MOD;
        res.sum = (res.sum + (ttt.sum+(ttt.num*tem)%MOD)%MOD)%MOD;
        res.ssum = (res.ssum +((ttt.ssum + 2*tem%MOD*ttt.sum)%MOD + (tem*tem%MOD*ttt.num)%MOD ))%MOD;
    }
    if(!flag) {dp[len][mod][smod] = res;vis[len][mod][smod]=1;}
    return res;
}
LL calc(LL x)
{
    int len = 0;
    while(x != 0)
    {
        digit[++len] = x % 10;
        x/=10;
    }
    node tem=dfs(len,0,0,1);
    return tem.ssum;
}
int main()
{
  //  fre();
    int t;
    LL l,r;
    pow10[0] = 1;
    for(int i = 1; i < 19; ++i) pow10[i] = (pow10[i-1]*10)%MOD;
    scanf("%d",&t);
    MS(dp,0);
    while(t--)
    {
        scanf("%I64d%I64d",&l,&r);
        printf("%I64d\n",(calc(r)-calc(l-1)+MOD)%MOD);//此处防止负数,要+MOD
    }
    return 0;
}


DeepSeek与豆包无缝对接:5分钟搞定智能周报自动化(附完整代码) 本文详细介绍了如何利用DeepSeek与豆包API,快速搭建一个智能周报自动化系统。通过整合豆包平台的工作流数据,并调用DeepSeek大模型进行深度分析与内容生成,该系统能在5分钟内自动抓取、分析多源信息,并生成结构清晰、富有洞察力的团队周报,显著提升工作效率。 阅读详情

相关推荐

人工势场法在自动驾驶避障中的实践与优化

本文深入探讨了人工势场法在自动驾驶避障中的核心原理与实践优化。通过解析引力与斥力模型,揭示了经典算法在局部最优和目标不可达等问题上的局限性,并重点介绍了改进斥力场函数、引入道路边界斥力及动态参数调整等关键优化策略,有效提升了该局部路径规划算法在复杂动态场景下的实用性与鲁棒性。

weixin_29208327的博客 927

杭电 25道动态规划汇总

HDU 25道动态规划题的解题报告 http://acm.hdu.edu.cn/webcontest/contest_show.php?cid=1264 密码:zafu A.         最简单的dp,但很重要。说明了动态规划产生的动机之一:递归产生的大量重复子问题。有两种解决方法,一、记忆化搜索,就是在用递归处理问题的过程中把已经算过的状态记录在一张表dp[][]中,下一次需要重复

qingyunbiying的专栏 1675

什么是无人机巡检?如何实现无人机自动巡检?

复亚智能的无人机自动巡检系统通过高度自动化的技术,实现了无人机的高效巡检作业。无人机自动机场支持无人机的自动起降和电池更换,自动飞行算法确保无人机在复杂环境中的精准飞行和拍摄,而云端识别诊断和AI感知算法平台则实现图像的实时传输和智能分析。复亚智能,作为无人机技术的创新者和推动者,致力于开发先进的无人机自动巡检解决方案,助力各行各业实现智能化、自动化的巡检工作,引领智能巡检的未来。利用人工智能和机器学习算法,无人机可以被训练来识别特定的模式和异常,如结构损坏、热泄漏等,从而提高巡检的准确性和效率。

foiadrone的博客 2842

数位DP学习整理(数位DP看完这篇你就会了)

文章目录数位DP数位DP介绍数位DP解法数位DP经典例题例题1:度的数量例题2:计数问题例题3:数字游戏例题4:windy数数位DP总结 数位DP 数位DP介绍 数位DP往往都是这样的题型,给定一个闭区间[l,r][l,r][l,r],让你求这个区间中满足某种条件的数的总数。而这个区间可能很大,简单的暴力代码如下: int ans=0; for(int i=l;i<=r;i++){ if(check(i))ans++; } 我们发现,若区间长度超过1e81e81e8,我们暴力枚举就会超时了,

pursuit的博客 4万+

基于线性光耦HCNR200的高压直流采样电路设计与精度优化

本文详细介绍了基于线性光耦HCNR200的高压直流采样电路设计与精度优化方法。针对直流高电压测量中的安全与干扰问题,提出采用HCNR200光耦隔离方案,实现高精度线性传输。文章深入解析电路设计关键细节,包括电阻网络、运放选型、滤波电容配置等,并提供精度优化实战技巧与常见问题排查指南,助力新能源电动汽车和高压储能系统的高压直流采样应用。

weixin_42713608的博客 579

SAP期初库存导入 (1)

LSMW

IT养家 7191

788. 旋转数字

788. 旋转数字 我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数。要求每位数字都要被旋转。 如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们自己;2 和 5 可以互相旋转成对方(在这种情况下,它们以不同的方向旋转,换句话说,2 和 5 互为镜像);6 和 9 同理,除了这些以外其他的数字旋转以后都不再是有效的数字。 现在我们有一个正整数 N, 计算从 1 到 N 中有多少个数 X

yungezier的博客 1255

红外弱小目标检测:IPI算法解读及MATLAB复现

参考文献:[1]C. Gaoet al., “Infrared Patch-Image Model for Small Target Detection in a Single Image,” vol. 22, no. 12, pp. 4996–5009, 2013. 本文整理????论文笔记,并附MATLAB实现代码。 一、阅读笔记 1. 摘要 IPI算法是单帧检测算法; 利用背景的非局部子相关性(non-local self-correlation ofbackground),将目标检测转..

小草莓的魔法笔记 1万+

数位dp(算法篇)

数位dp也就是将动态规划的思想放入到对数的每一位进行,也是一种动态规划的一种,本篇文章将会带大家简单学习一下

hellmorning的博客 3729

内模控制(IMC)——理论、应用与实践

内模控制方法的核心思想是利用被控对象的数学模型(即内模)构建控制器,使得控制器可以“预知”被控系统的动态响应,从而在控制输入中提前补偿模型的固有特性和扰动影响。常见的内模控制结构中,将系统分为无延迟部分和扰动部分,并利用内部模型预测输出值,再通过反馈回路进行误差修正。utuimctufbtutui​mctuf​bt其中,uimctu_imc(t)ui​mct为内模预测得到的预补偿控制量,ufbtu_fb(t)uf​bt。

闲人编程的博客 2632

Failed to connect to gitee.com port 443: Time out 连接超时提示【Bug已完美解决-鸿蒙开发】

在进行Sample导入或Git项目Clone时,遇到连接超时问题是一个常见而令人烦扰的情况。连接超时问题通常源于网络限制,可能是由于防火墙、代理设置或其他网络配置导致。因此,首先要关注网络状态,确保网络通畅。如果在网络受限的情况下,代理服务器配置是一个有效的解决方案。通过在Git全局配置中设置代理信息,可以将网络请求通过代理服务器传输,规避一些网络限制。但在使用代理时,需要确保代理服务器的可用性和稳定性,以免引入新的问题。

一键难忘的博客 4557

dp 就 dp ,数位dp是什么意思 ?

🐬初学一门技术时,总有些许的疑惑,别怕,它们是我们学习路上的点点繁星,帮助我们不断成长。🦄文章粗浅,希望对大家有帮助!

仰望天空,妳我亦是行人. 3164

为JETSON TX2开发板部署YoloV5

参考资料一:nvidia为JETSON Tx2编译的pytorch 参考资料二:Jetson软件包下载 参考资料三:Tx2安装工具的使用 参考资料四: Jetson烧录工具 参考资料五: B站下载的行人视频 一、升级TX2系统版本到最新版(JetPack4.6) 我拿到的板子的版本太低了,在工作的过程中会有很多问题,因此要先升级到最新版 下载参考资料四中的烧录工具,在Ubuntu18.04中安装,只能,必须,一定是Ubuntu18.04 安装完成后使用非root用户启动SDK Manger,登录Nvi.

贱贱的剑 5887

HDU 4507 数位dp 超详细按步题解!

一定要耐心看下去,你可以学会,博主在做这道题时,原以为不可能做的出来,但其实就是一个耐心的问题,相信自己,一定可以! 涉及知识:数位dp,模运算 思想:计数数位dp转为求和 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int mod=1e9+7;//模数 const int LEN=...

dominicwilson的博客 353

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

hdu4507——数位dp(计数求和)

题目链接:https://vjudge.net/problem/HDU-4507 题目大意: 如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关——   1、整数中某一位是7;   2、整数的每一位加起来的和是7的整数倍;   3、这个整数是7的整数倍; 求一定区间内与7无关的数的平方和。 题解: 这个题约束条件很常见,但是要求的不是数的个数,而是平方和就有点恶心了。...

mumei的博客 659

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

hdu4507(数位DP)

地址:http://acm.hdu.edu.cn/showproblem.php?pid=4507 吉哥系列故事——恨7不成妻 Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 1242    Accepted Submissi

ten_three 1201

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

hdu 4507 恨7不成妻(数位dp)

目录问题分析参照状态设计计算代码 问题 hdu 4507 恨7不成妻 - https://acm.hdu.edu.cn/showproblem.php?pid=4507 分析 参照 详细讨论参照Bomb 状态设计 state1∈{0、1、2、3、4、5、6}state1\in \{0、1、2、3、4、5、6\}state1∈{0、1、2、3、4、5、6} state2∈{0、1、2、3、4、5、6}state2\in \{0、1、2、3、4、5、6\}state2∈{0、1、2、3、4、5、6} dp

jpphy0的博客 195

HDU 4507 吉哥系列故事——恨7不成妻 数位DP--思路分析

**本篇博客只涉及我对这个题目的理解和公式方式的推导,没有完整的代码, 本篇一共三个方法分析,第一个是略写,后两个是重点,想看正解思路直接跳第三个方法就好**。 题目要求出L,R之间与7无关的数字的平方和,而且范围在1e18之间,很容易想到是数位DP。这种时候就出现了不同的思路。 第一种是直接往爆搜靠拢,pos=0时,说明数据合理,return 这个数字的平方值。这个方法在我看来肯定不行,就算结...

qq_43718271的博客 299

【数位dp】 Step by Step

看到诸位神牛的代码和Blog,我也来班门弄斧学一下 数位dp Step0:找木板和资料 向ftiasch 和 edward_mj (窃笑,师父们T_T)求了资料,得到一个好板子——BUPT 某神的Blog Step1:撸水题 HDU 2089 直接暴力就可以,不过还是老老实实地数位dp一把,基本是板子题目。 HDU 3555 同上的数位DP UESTC 1307  前导0 建立状态原来

向往纳木错的程序猿生活 4816

hdu 4507 吉哥系列故事——恨7不成妻 题解(数位DP(超难))

原题链接: HDU:点我QωQ 题意简述 定义一个正整数和777有关,满足以下三个之一: 某一位是777 数位和是777的倍数 原数是777的倍数 那么就和777有关。给定QQQ和QQQ个区间[l,r][l,r][l,r],请求出l,rl,rl,r里面和777无关的数的平方和。 数据 输入 第一行是一个Q(Q&lt;=50)Q(Q&lt;=50)Q(Q<=50) 接下来Q...

LightningUZ的博客 540

poj4507(数位dp)

题目链接:https://vjudge.net/problem/HDU-4507 题意:定义如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关——   1、整数中某一位是7;   2、整数的每一位加起来的和是7的整数倍;   3、这个整数是7的整数倍;   给定l,r,求[l,r] 区间与7无关的数的平方和。 思路:这3条定义都是常规的数位dp,但题目求的并不是与7无...

weixin_33882443的博客 152

【数位DP】HDU - 4507 - 吉哥系列故事——恨7不成妻

题目链接<http://acm.hdu.edu.cn/showproblem.php?pid=4507> 题意: 求出区间内,满足数位不包含7,数位之和不是7的倍数,本身不是7的步数的所有数字的平方和。 题解: 条件是很好满足的,复杂的是求平方和,我们先不求平方和,先考虑求所有数字的一次之和的解法。 对于任何一个数,我们把最高位拆出来,比如123拆成100+23,5764拆成...

Eliot的博客 219

HDU - 4507 吉哥系列故事——恨7不成妻(数位DP求平方和)

链接:HDU - 4507 吉哥系列故事——恨7不成妻 题意: 如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关   1、整数中某一位是7;   2、整数的每一位加起来的和是7的整数倍;   3、这个整数是7的整数倍; 现在问题来了:吉哥想知道在一定区间内和7无关的数字的平方和。 分析: 设数位为:dlen−1dlen−2⋯d2d1d0d_{len-1}d_{len-2}\cdo...

Plus Ultra! 347

hdu4507——数位dp

题意:计算给定区间内,不整除7、不含有7、数位之和不整除7的所有数的平方和。 思路和普通的数位dp一致,就是求平方和有点恶心。得求出每个状态的三个值:满足该状态的数的个数,这些数的和,这些数的平方和。 #include #include #include #include #define lng long long using namespace std; const int mod

cool_Fires的专栏 741

数位DP 做题小结

HDU 4507 题意:不满足条件的数字的平方和 思路:DP[pos][num][val] 表示做到第pos位,各个数字和%7=num,整个数字%7=val的合法数字平方和是多少。 #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) #define dep(i,a,b) for(int i=b;...

fufck 201

hdu 4507 数位dp(好题)

题解:数位dp 和简单的数位dp不同,这道题要算所有合法数的平方和 考虑到一个数可以写成X=ΣAi*Pi,(其中Ai为X每一位的值,Pi=10^i) 因为(A+B)^2=A*A+2*A*B+B*B (X1+X2+X3+...+Xn)^2=X1^2+2*X1*(X2+X3+...+Xn)+(X2+X3+...+Xn)^2 =X1^2+2*X1*(X2+X3+...+Xn)+X2^2

Everything can be done! 298
上一篇: hdu 3652 数位DP 进阶
下一篇: hdu 1633 数位DP 好题
QZQmmmm
博客等级 码龄11年 77粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值