【算法】数位DP

【题解】数位dp总结 之 从入门到模板

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=;
int n,a[maxn],NUM[maxn];
long long f[maxn];
struct cyc{int num/*数字数*/;long long ans/*1的数量*/;}qp;
cyc dfs(int deep,bool limit)//返回1的个数
{
if((f[deep]!=-&&!limit)||deep==)
{
qp.num=NUM[deep];
qp.ans=f[deep];
return qp;
}
int k=limit?a[deep]:;
int sum=;long long ans=;
for(int i=;i<=k;i++)
{
qp=dfs(deep-,limit&&i==k);
if(i==)ans+=qp.num;
ans+=qp.ans;
sum+=qp.num;
}
if(!NUM[deep]&&!limit)NUM[deep]=sum;
if(f[deep]==-&&!limit)f[deep]=ans;
qp.ans=ans;qp.num=sum;
return qp;
}
int main()
{
scanf("%d",&n);
int k=n;int N=;
while(k>)
{
N++;
a[N]=k%;
k/=;
}
memset(f,-,sizeof(f));
NUM[]=;f[]=;
printf("%lld",dfs(N,).ans);
return ;
}

最新文章

  1. CSS文档流
  2. Git merge 与 git rebase的区别
  3. WCF中Service Configuration Editor的使用方法
  4. 【NOIP2015】提高day2解题报告
  5. poj 1236 Network of Schools(连通图入度,出度为0)
  6. 基于Selenium2+Java的UI自动化(3) - 页面元素定位
  7. C#XML创建与节点对象引用
  8. 向MyEclipse中导入项目要注意的问题
  9. linux基本语法和常用运维命令
  10. PCB名詞解釋:通孔、盲孔、埋孔(转载)
  11. Nginx详解十:Nginx场景实践篇之Nginx静态资源场景配置
  12. Oozie如何和安装部署
  13. 浅谈Vue.use
  14. solr6.4.1搜索引擎(3)增量同步mysql数据库
  15. Layui treeGrid
  16. 那种多空计算方法更正确呢?——从此图看应该是TEST005
  17. iOS 统一配置
  18. 优化sql用到的方法
  19. Go语言高级特性总结——Struct、Map与JSON之间的转化
  20. Linux系统中查找、删除重复文件,释放磁盘空间。

热门文章

  1. SpringMVC拦截器实现登录认证(转发)
  2. Java中的线程状态转换和线程控制常用方法
  3. ajax的一些实用技巧
  4. autoCAD 2008 Win7 64位, win8 64位 安装 燕秀工具箱 yanxiu.cui 文件下载
  5. Windows网络编程系列教程之四:Select模型
  6. python-网易云简单爬虫
  7. Oracle查询字段中有空格的数据
  8. 限制玻尔兹曼机(Restricted Boltzmann Machine)RBM
  9. Spline样条函数 //C++关键字:operator // 重载函数 // 隐含的this指针 // 指针和const限定符
  10. Python re(正则表达式)模块