bzoj 1026 [SCOI2009]windy数——数位dp水题
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1026
迷恋上用dfs写数位dp了。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=15; int l,r,dg[N],dp[N][N]; int dfs(int p,int lst,bool fr,bool fx) { if(!p)return 1; if(!fx&&dp[p][lst]!=-1)return dp[p][lst]; int st=(fr?1:0),end=(fx?dg[p]:9); int ret=0; for(int i=st;i<=end;i++) if(fr||(abs(i-lst)>=2)) ret+=dfs(p-1,i,0,fx&(i==dg[p])); if(!fx)dp[p][lst]=ret; return ret; } int calc(int x) { int cnt=0,ret=0; while(x)dg[++cnt]=x%10,x/=10; for(int i=1;i<=cnt;i++) { memset(dp,-1,sizeof dp);//写在这里 ret+=dfs(i,0,1,(i==cnt)); } return ret; } int main() { scanf("%d%d",&l,&r); printf("%d\n",calc(r)-calc(l-1)); return 0; }
分类:
动态规划--数位dp
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 我干了两个月的大项目,开源了!
· 推荐一款非常好用的在线 SSH 管理工具
· 千万级的大表,如何做性能调优?
· 盘点!HelloGitHub 年度热门开源项目
· Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,