【51NOD】数字1的数量
2024-09-27 23:00:00
【算法】数位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 ;
}
最新文章
- CSS文档流
- Git merge 与 git rebase的区别
- WCF中Service Configuration Editor的使用方法
- 【NOIP2015】提高day2解题报告
- poj 1236 Network of Schools(连通图入度,出度为0)
- 基于Selenium2+Java的UI自动化(3) - 页面元素定位
- C#XML创建与节点对象引用
- 向MyEclipse中导入项目要注意的问题
- linux基本语法和常用运维命令
- PCB名詞解釋:通孔、盲孔、埋孔(转载)
- Nginx详解十:Nginx场景实践篇之Nginx静态资源场景配置
- Oozie如何和安装部署
- 浅谈Vue.use
- solr6.4.1搜索引擎(3)增量同步mysql数据库
- Layui treeGrid
- 那种多空计算方法更正确呢?——从此图看应该是TEST005
- iOS 统一配置
- 优化sql用到的方法
- Go语言高级特性总结——Struct、Map与JSON之间的转化
- Linux系统中查找、删除重复文件,释放磁盘空间。
热门文章
- SpringMVC拦截器实现登录认证(转发)
- Java中的线程状态转换和线程控制常用方法
- ajax的一些实用技巧
- autoCAD 2008 Win7 64位, win8 64位 安装 燕秀工具箱 yanxiu.cui 文件下载
- Windows网络编程系列教程之四:Select模型
- python-网易云简单爬虫
- Oracle查询字段中有空格的数据
- 限制玻尔兹曼机(Restricted Boltzmann Machine)RBM
- Spline样条函数 //C++关键字:operator // 重载函数 // 隐含的this指针 // 指针和const限定符
- Python re(正则表达式)模块