首页 > 其他分享 >数位DP

数位DP

时间:2024-04-05 10:12:07浏览次数:33  
标签:false int ll dfs num memo DP 数位

CF204A

题目链接
https://codeforces.com/problemset/problem/204/A
题目大意
image
模板讲解
image
image

数位DP模板

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n, m, t;
ll l,r;
string s;
ll memo[20][10][10];
ll dfs(int i, int first,int last,bool is_limit, bool is_num)
{
    if(i == m)
    {
        if(is_num && first == last) return 1;
        else                        return 0;
    }
    if(!is_limit && is_num && memo[i][first][last] != -1) return memo[i][first][last];
    ll res = 0;
    int up = is_limit ? s[i] - '0' : 9;
    if(!is_num) {
        res = dfs(i + 1,0,0,false,false);
        for(int d = 1;d <= up;++d){
            res += dfs(i + 1,d,d,is_limit && d == up,true);
        }
    }else{
        for (int d = 0; d <= up; ++d)
            res += dfs(i + 1,first, d,is_limit && d == up, true);
    }
    if (!is_limit && is_num)
        memo[i][first][last] = res;
    return res;
}
void solve() {
    cin >> l >> r;

    memset(memo,-1,sizeof(memo));
    s = to_string(l - 1);
    m = s.size();
    ll ans1 = dfs(0,0,0,true,false);

    memset(memo,-1,sizeof(memo));
    s = to_string(r);
    m = s.size();
    ll ans2 = dfs(0,0,0,true,false);
    cout << ans2 - ans1 << '\n';
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    t = 1;
    for (int _ = 0; _ < t; _++)
        solve();
    return 0;
}

标签:false,int,ll,dfs,num,memo,DP,数位
From: https://www.cnblogs.com/gebeng/p/18115512

相关文章

  • Offer必备算法21_回文串dp_六道力扣题详解(由易到难)
    目录①力扣647.回文子串解析代码②力扣5.最长回文子串解析代码③力扣1745.分割回文串IV解析代码④力扣132.分割回文串II解析代码⑤力扣516.最长回文子序列解析代码⑥力扣1312.让字符串成为回文串的最少插入次数解析代码本篇完。①力扣647.回文子串64......
  • flask 装饰器 AssertionError: View function mapping is overwriting an existing en
    1问题描述写了一个登陆认证装饰器,部分试图,只有用户登陆才能访问deflogin_wrapper(func):definner(*args,**kwargs):"""判断是否登陆若是进入视图函数否则重定向到登陆页面"""if......
  • 用UDP协议实现发送接收的网络聊天室
     发送数据 UDP协议是面向无连接的"面向无连接的"通常指的是一种网络通信模式,也称为无连接通信或者数据报通信。在这种模式下,通信的两个端点之间不需要建立持续的连接,而是通过将数据分成小块(数据包)并单独发送来进行通信。每个数据包都包含了足够的信息(如源地址、目标地址......
  • 状压DP
    CF580D题目链接https://codeforces.com/problemset/problem/580/D题目大意思路令dp[i][j]表示,吃菜状态为i,且最后一道菜为j的最大满足感!代码#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=20;intn,m,t,q;inta[N],b[N*N][N*......
  • 数位DP
    数位DP一般解决的问题一般是位数极大,之和组成这个数的数字有关一般要维护\(:\)填到第几个数字,是否有限制。MagicNumbers令\(F(x)\)表示\(\lex\)的满足条件元素数量可以发现,答案\(F(r)-F(l-1)\)状态\((i,md,flag1,falg2,sum)\)表示填了前\(i\)个数......
  • GDPU 竞赛技能实践 天码行空6
    ......
  • 网络基础二——传输层协议UDP与TCP
    九、传输层协议​传输层协议有UDP协议、TCP协议等;​两个远端机器通过使用"源IP",“源端口号”,“目的IP”,“目的端口号”,"协议号"来标识一次通信;9.1端口号的划分​0-1023:知名端口号,HTTP,HTTPS,FTP,SSH等应用层协议,他们的端口号都是固定的;如:ssh使用的是22号端口,ftp(rzsz使......
  • ffmpeg tcp/udp 拉流
    参考文章:ffmpeg命令分析-拉取TCP流FFmpeg实现rtp推流ffmpeg除了拉取rtsp,hsl等协议外,也支持直接通过tcp/udp推拉流url格式为udp://ip:port或tcp://ip:port注意:udp或tcp有主被动的概念:主动:自己作为客户端,从服务端拉流被动:自己作为服务端,等待客户端推流直接使用tcp/u......
  • 测试UDP端口是否开放
    软件下载地址:https://nmap.org/download.htmlwindows安装后,添加下系统路径 命令说明:>ncat-hNcat7.94(https://nmap.org/ncat)Usage:ncat[options][hostname][port]Optionstakingatimeassumeseconds.Append'ms'formilliseconds,'s'forsec......
  • 蓝桥杯算法集训 - Week 5:树状数组、各类DP算法
    蓝桥杯算法集训-Week5本系列随笔用于整理AcWing题单——《蓝桥杯集训·每日一题2024》的系列题型及其对应的算法模板。一、树状数组树状数组是一种数据结构,可以快速地完成以下两个操作:将第i个数加上c快速求前缀和,即任意区间[i,j]的和Ⅰ、代码模板//树状数组长度......