C - Balanced Number HDU - 3709 (数位dp)

2023-10-26

题目链接:https://cn.vjudge.net/contest/278036#problem/C

题目大意:手首先是T组数据,然后每一次输入两个数l,r,求这个区间里面满足以某个数字为中心的两侧力矩和相等的个数,举个例子,4139,我们如果把3当做对称点,那么力矩和的计算方式= (1-3)*4 + 3*(2-3)+9*(4-3)=0,这个数是满足题目条件的。

具体思路:模板题,我们用一个三维dp储存结果,dp[len][pos][sum],len代表的是当前处理的是第几位,pos代表的是当前枚举的是第几个位置,sum代表的是当前的力矩和。 

另外,这个题去重的情况只有长度是不同0,比如说000和0其实是一个数,这个时候需要去重。不存在一个数存在两个对称点并且力矩为0的情况,假设当前的数存在满足情况的对称点,那么如果他如果的左边还有对称点的话,左边的力矩最多保持不变,这个时候右边的力矩肯定会增加,右边类似,所以不存在一个数存在两个满足情况的力矩。

 AC代码:

#include<iostream>
#include<stack>
#include<stdio.h>
#include<string>
#include<cstring>
using namespace std;
# define ll long long
const int maxn = 10+10;
ll dig[maxn],dp[maxn][maxn][3000];
ll dfs(ll len,ll pos,ll sum,bool fp)
{
    if(len==0)
        return sum==0;
    if(sum<0)//如果小于0的话,再往右也不会增加了,所以这个时候直接不用再往下走了。
        return 0;
    if(!fp&&dp[len][pos][sum]!=-1)
        return dp[len][pos][sum];
    ll ans=0,fmax=fp?dig[len]:9;
    for(int i=0; i<=fmax; i++)
    {
        ans+=dfs(len-1,pos,(len-pos)*i+sum,fp&i==fmax);
    }
    if(!fp)
        dp[len][pos][sum]=ans;
    return ans;
}
ll cal(ll n)
{
    memset(dp,-1,sizeof(dp));
    int num=0;
    while(n)
    {
        dig[++num]=n%10;
        n/=10;
    }
    ll sum=0;
    for(ll i=1; i<=num; i++)
    {
        sum+=dfs(num,i,0,1);
    }
    return sum-num+1;//去重的情况,因为0000和0和0000都是一个数。
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        ll n,m;
        scanf("%lld %lld",&n,&m);
        printf("%lld\n",cal(m)-cal(n-1));
    }
    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C - Balanced Number HDU - 3709 (数位dp) 的相关文章

  • Arduino学习模拟输入

    1 通过电位器控制led亮度 2 代码很简单 如下 void setup Serial begin 9600 串口初始化 波特率设置为9600 pinMode 9 OUTPUT 设置9脚为输出模式 void loop int analogI
  • CNN+GRU实现验证码端到端识别

    Part 0 模型概览 captcha overview png 从图片到序列实际上就是Image2text也就是seq2seq的一种 encoder是Image decoder是验证码序列 由于keras不支持传统的在decoder部分每
  • 应用配置管理

    本节课程要点 ConfigMaps 和 Secret 资源的创建和使用 Pod 身份认证的实现和原理 容器资源 安全 前置校验等配置和使用 细分为以下八个方面 需求来源 背景问题 首先一起来看一下需求来源 大家应该都有过这样的经验 就是用一
  • STM32F103 USB OTA升级BootLoader (一)

    1 配置外部高速晶振 2 勾选USB功能 3 将USB模式配置Virtual Port Com 4 将系统主频配置为72M USB频率配置为48M 5 配置好项目名称 开发环境 最后获取代码 6 修改Flash大小和勾选Use Micro
  • 人的梦想 是不会结束的!

    文章目录 前言 一 一年之约 1 学习嵌入式 2 探寻嵌入式之路 二 我的心跳 1 奉劝 2 行动 人的梦想是永远不会结束的 前言 随着在程序员这条路上不断发展 自己学得越多 就会感觉自己学的东西有多渺小 下面就说说2019年到2020年的
  • [ 对比学习篇 ] 经典网络模型 —— Contrastive Learning

    Author Horizon Max 编程技巧篇 各种操作小结 神经网络篇 经典网络模型 算法篇 再忙也别忘了 LeetCode 对比学习篇 经典网络模型 Contrastive Learning 01 InstDisc 结构框图 详解 效
  • 非科班自学计算机需要学习什么内容?

    文章目录 前言 一 方向 gt 语言的选择 1 1 语言vs方向 1 2 重要观点 二 自学方法 另外说到计算机相关基础推荐书籍 三 自学资源 前言 非计算机专业 又想通过自学找到计算机相关工作的同学还是很多的 并且这条路也是可行的 毕竟计
  • 2.2 Fabric核心配置文件的理解

    目标 了解Hyperledger Fabric对Peer节点的核心配置信息 了解Hyperledger Fabric对orderer节点的核心配置信息 任务实现 在Hyperledger Fabric中 有两个示例配置文件 一个为Peer节
  • GDB调试工具命令速查

    1 生成调试信息 一般来说GDB主要调试的是C C 的程序 要调试C C 的程序 首先在编译时 我们必须要把调试信息加到可执行文件中 使用编译 gcc g 的 g 参数可以做到这一点 gcc g test c g g test cpp 如果
  • 节点重要性评估方法

    SIR Kendall correlation coefficient k shell领域中心度论文中的指标 数据集信息 A novel weight neighborhood centrality algorithm for identi
  • qt中设置文件保存的几种方式

    归纳总结4种qt常用的文件保存的方式 1 需要用到的头文件 include
  • [1007]python3安装geohash

    Geohash是一个可以对地理位置信息进行加密和解密的系统 https en wikipedia org wiki Geohash Python安装geohash库后 可调用decode 和encode 函数 按照一般的步骤进行安装pip
  • jQuery基础使用

    什么是 jQuery jQuery是一个JavaScript函数库 jQuery是一个轻量级的 写的少 做的多 的JavaScript库 所以jQuery库本质上还是JavaScript代码 它只是对JavaScript语言进行包装处理 通
  • ../lib/crt1.o: In function `_start':

    出现以上错误是因为你改变了 gcc 或者是 arm gcc xxx的 sysroot gcc v 看一下 把默认sysroot下面的库拷贝到你指定的sysroot即可
  • JSBox 移动端 JavaScript 编程环境

    什么是 JSBox JSBox 是一个 JavaScript 的集成开发环境 你可以在这里学习如何编写 JavaScript 我们提供了一系列的工具来增强你的开发体验 JSBox 对编程新手和有经验的工程师都是非常友好的 你不想试试吗 别再
  • 【Spring】RestTemplate访问https

    文章目录 1 概述 1 概述 今天要对接华为的环境 然后我们要使用https连接对方的yarn环境 对方的访问地址如下 https xxx port Yarn ResourceManager 33 proxy application 165
  • MOS管的电路设计的经典应用(2)-开关电路设计

    上一节 我们讲了MOS管做双向电平转换中的应用 这一应用可以说是非常的经典 今天给大家讲讲MOS管作为开关使用 硬件人都知道MOS管属于电压控制型元器件 即在MOS管的栅极加上电压时 当栅 源电压压差大于Vgs th 时 MOS管即可导通
  • 【精品课设】经典PID与专家PID控制的对比与分析(二)

    精品课设 经典PID与专家PID控制的对比与分析 二 目录 精品课设 经典PID与专家PID控制的对比与分析 二 1经典PID控制的设计与仿真 1 1 被控对象传递函数的设计 1 2 经典PID控制的仿真 2专家PID控制的设计 2 1 专

随机推荐