数位dp(未完工)
前言好像好久没写blog了还是喜欢可爱的数位dp啊正文数位dp,是指一种专门用于解决区间范围内满足特定约束条件的数字统计问题的算法尤其适用于处理数值范围极大的场景。其核心是通过将数字按数位拆解结合记忆化搜索或迭代的动态规划方法从而迭代算出答案。本文使用记忆化搜索方式进行计算因为自认为更简单。数位dp模板依旧先上模板。先讲述一下流程判断是否到达边界。判断是否遍历过如果遍历过直接return。for循环从0到边界(看limit)。如果有条件不满足continue。累计迭代dfs如果没有前导0dp记录一下return ans。好了放个代码看一下吧。#includebits/stdc.h using namespace std; int o,p,a[15],dp[15][15][2][2]; int dfs(int now,int pre,int limit,int flag){ if(now0)return 1; if(dp[now][pre][limit][flag]!-1)return dp[now][pre][limit][flag]; int ans0; for(int i0;i(limit?a[now]:9);i){ if(!flagabs(i-pre)2)continue; ansdfs(now-1,i,limit(ia[now]),flag(i0)); } dp[now][pre][limit][flag]ans; return ans; } int init(int x){ int cnt0; while(x){ a[cnt]x%10; x/10; } memset(dp,-1,sizeof dp); return dfs(cnt,12,1,1); } int main(){ int o,p; cinop; coutinit(p)-init(o-1)\n; }好了做几道题目练练手吧。。。P2602 [ZJOI2010] 数字计数依旧先放部分代码int dfs(int now,int limit,int flag,int d,int sum){ if(now0)return sum; if(dp[now][limit][flag][sum]!-1)return dp[now][limit][flag][sum]; int ans0; for(int i0;i(limit?a[now]:9);i){ int tmpsum; if(id(d!0||!flag))tmp; ansdfs(now-1,limit(ia[now]),flag(i0),d,tmp); } dp[now][limit][flag][sum]ans; return ans; } signed main(){ int o,p; cinop; for(int i0;i10;i)coutinit(p,i)-init(o-1,i) ; }这里其实只要枚举个数字剩下就和上一题一样了。P8764 [蓝桥杯 2021 国 BC] 二进制问题int dfs(int now,int limit,int sum){ if(now0)return sumk; if(dp[now][limit][sum]!-1)return dp[now][limit][sum]; int ans0; for(int i0;i1;i){ if(limitia[now])break; ansdfs(now-1,limit(ia[now]),sumi); } dp[now][limit][sum]ans; return ans; } int init(int x){ int cnt0; while(x){ a[cnt]x%2; x/2; } memset(dp,-1,sizeof dp); return dfs(cnt,1,0); }这个只是要把原来的10进制改为2进制好了改一下就和模板一样了。P4124 [CQOI2016] 手机号码int dfs(int pos,int num,int rep,int f8,int f4,int frep,int f,string limit){ if(limit9999999999)return 0; if(f81f41)return 0; if(pos0){ if((frep1||rep3)(f8^f41||(f80f40)))return 1; else return 0; } if(!fdp[pos][num][rep][f8][f4][frep]!-1)return dp[pos][num][rep][f8][f4][frep]; int ans0; int k9; if(f)klimit[11-pos]-0; int l0; if(pos11)l1; for(int ik;il;i--){ ansdfs(pos-1,i,(numi?rep1:1),f8||(i8),f4||(i4),frep||(rep3),f(ik),limit); } if(!f)dp[pos][num][rep][f8][f4][frep]ans; return ans; }这里判断就很麻烦了首先要判断4与8有没有还要判断最大相等字串其他就差不多了只是处理麻烦了一点。P4127 [AHOI2009] 同类分布int dfs(int now,int sum,int st,int limit){ if(nowcntsum0)return 0; if(nowcnt)return st0summod?1:0; if(!limitdp[now][sum][st]!-1)return dp[now][sum][st]; int ans0; for(int i0;i(limit?a[cnt-now1]:9);i){ ansdfs(now1,sumi,(st*10i)%mod,i(limit?a[cnt-now1]:9)limit); } return limit?ans:dp[now][sum][st]ans; } int init(int x){ cnt0; while(x){ a[cnt]x%10; x/10; } int res0; for(mod1;mod9*cnt;mod){ memset(dp,-1,sizeof dp); resdfs(1,0,0,1); } return res; }这题搜索框架很简单但是如何记录dp呢st最大会达到1e18肯定不可能的。所以我们可以使用取模。于是我们可以枚举mod来叠加从而算出答案。P3413 SAC#1 - 萌数CF55D Beautiful numbers结语hhh好好玩啊

相关新闻

Agentic AI:聊天机器人到自主执行系统,把工具链跑成稳定流程

Agentic AI:聊天机器人到自主执行系统,把工具链跑成稳定流程

聊《Agentic AI:聊天机器人到自主执行系统,把工具链跑成稳定流程》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要这篇面向关注 AI 产品化和自动化系统的开发者,但不会把“Ag…

2026/7/3 3:26:53 阅读更多 →
AI-Agent开发实战指南 (新兴技术选型)

AI-Agent开发实战指南 (新兴技术选型)

AI Agent 开发实战指南从零构建自主决策的智能体1. 什么是 AI AgentAI Agent(智能体)是能够自主感知环境、制定计划、执行操作并学习迭代的 AI 系统。与传统的"一问一答"式聊天机器人不同,Agent 具备以下核心能力:感知&…

2026/7/3 3:26:53 阅读更多 →
Vibe Coding实战:3分钟搭建SpringBoot+MyBatis-Plus服务骨架

Vibe Coding实战:3分钟搭建SpringBoot+MyBatis-Plus服务骨架

这类工具最值得先看的不是功能列表,而是能不能在普通开发环境里,把“描述需求”到“跑通服务”的路径真正缩短。Vibe Coding 和类似的 AI 编程辅助,核心价值在于它能理解你的“氛围”或意图,快速生成可运行的代码骨架,…

2026/7/3 3:22:52 阅读更多 →

最新新闻

青岛有哪些AI智能体落地案例?企业真实应用效果参考

青岛有哪些AI智能体落地案例?企业真实应用效果参考

随着人工智能从“概念狂欢”走向“价值落地”,2026年的企业数字化转型开始研究AI智能体(AI Agent)究竟能为业务带来多少降本增效的真实改变。 作为山东数字经济发展的核心城市,青岛在人工智能与实体经济融合方面一直走在前列。从灯…

2026/7/3 4:39:14 阅读更多 →
数字人口播怎么做获客?从内容生产到信任建立的一套思路(2026)

数字人口播怎么做获客?从内容生产到信任建立的一套思路(2026)

数字人口播怎么做获客?从内容生产到信任建立的一套思路(2026) “数字人口播怎么做获客”这个问题,表面看是在问视频形式,实际上问的是:如果不用真人反复出镜,数字人口播能不能真正承担获客内容的…

2026/7/3 4:37:13 阅读更多 →
吾爱大佬开发!全能格式转换工具,可以转换各种音视频文档!

吾爱大佬开发!全能格式转换工具,可以转换各种音视频文档!

前言 以前遇到格式不是兼容的问题确实比较麻烦,视频转格式、图片要压缩、文档要合并……,今天介绍这个工具-格式大师,主要解决的是视频、音频、图片、文档,四大类格式的互转以及压缩。 比如批量转格式、批量压缩,或者…

2026/7/3 4:35:13 阅读更多 →
借助冰淇淋车趣味学 Vim 操作,快速上手完整游戏攻略来啦!

借助冰淇淋车趣味学 Vim 操作,快速上手完整游戏攻略来啦!

借助冰淇淋车学习 Vim 操作 在这里,冰淇淋车就是你的光标,小镇则代表你的文本。你可以用这种有趣的方式学习 Vim 操作。快 玩完整游戏 试试演示版 ↓ 快速体验一关 你只需使用 h j k l 键,就能将冰淇淋车开到顾客面前。玩完整游戏 → 玩法说明…

2026/7/3 4:33:13 阅读更多 →
第94题 2026年国家级科研痛点 IGBT模块用高导热硅凝胶与灌封材料

第94题 2026年国家级科研痛点 IGBT模块用高导热硅凝胶与灌封材料

2026年国家级科研痛点 IGBT模块用高导热硅凝胶与灌封材料 痛点直陈 当前1200V至3300V新能源车及轨道交通用IGBT功率模块,封装材料陷入四个死结无法动弹:一是导热系数想做到2.5W/(mK)以上,胶水粘度就飙升,灌进微米级细缝必裹气泡&a…

2026/7/3 4:31:12 阅读更多 →
Django分页封装

Django分页封装

page_data.pyfrom django.utils.safestring import mark_safe from copy import deepcopy class PageData:def __init__(self,request,queryset,page_size1,page_num3,page_parampage):request:请求queryset:数据表的查询结果pagesize:一页显示多少条数据page_num:当前页面显示…

2026/7/3 4:29:12 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻