博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 1026: [SCOI2009]windy数【数位dp】
阅读量:5021 次
发布时间:2019-06-12

本文共 1013 字,大约阅读时间需要 3 分钟。

忘记limit不能记WA了一发……

典型数位dp,变成work(r)-work(l-1),然后dfs的时候记录w当前位置,la上一个数选的什么,lm当前位是否有上限,ok当前位是否可以不考虑差大于等于2的情况(前面全是0)
然后对于lm和ok都为0的情况记忆化一下即可
啊bzoj不知道为啥给cmath下的abs判CE……换成algorithm就没事

#include
#include
#include
using namespace std;const int N=15;long long l,r,f[N][N],a[N],tot;long long dfs(int w,int la,int lm,int ok){ if(!lm&&!ok&&f[w][la]) return f[w][la]; if(!w) return 1; long long r=0; if(lm) { for(int i=0;i<=a[w];i++) if(abs(la-i)>1||ok) r+=dfs(w-1,i,i==a[w],ok&&i==0); } else { for(int i=0;i<=9;i++) if(abs(la-i)>1||ok) r+=dfs(w-1,i,0,ok&&i==0); } if(!lm&&!ok) return f[w][la]=r; else return r;}long long wk(long long x){ tot=0; while(x) a[++tot]=x%10,x/=10; return dfs(tot,13,1,1);}int main(){ scanf("%lld%lld",&l,&r); printf("%lld\n",wk(r)-wk(l-1)); return 0;}

转载于:https://www.cnblogs.com/lokiii/p/9404462.html

你可能感兴趣的文章
在Macos下完美解决Adobe Dreamweaver CC 2018 汉化及操作方法
查看>>
【转】 Newtonsoft.Json高级用法
查看>>
CodeBlocks X64 SVN 编译版
查看>>
Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
查看>>
bug记录_signalr执行$.connnection.testhub结果为空
查看>>
【转】常用的latex宏包
查看>>
[TMS320C674x] 一、GPIO认识
查看>>
酷狗的皮肤文件存放在哪
查看>>
iOS RunLoop简介
查看>>
C++的引用
查看>>
T-SQL查询进阶--深入浅出视图
查看>>
MapKeyboard 键盘按键映射 机械革命S1 Pro-02
查看>>
Android读取url图片保存及文件读取
查看>>
完整ASP.Net Excel导入
查看>>
判断CPU大小端示例代码
查看>>
ARTS打卡第13周
查看>>
循环队列的运用---求K阶斐波那契序列
查看>>
pta 编程题14 Huffman Codes
查看>>
初始化bootstrap treeview树节点
查看>>
python selenium向<sapn>标签中写入内容
查看>>