【BZOJ1833】【ZJOI2010】数字计数 数位DP
链接:
#include <stdio.h>
int main()
{
puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢");
puts("网址:blog.csdn.net/vmurder/article/details/46444975");
}
题解:
然而并没有DP。
[1。R]的答案减去[1,L]的答案。
对于一个数 X 。求 [1,X] 的答案。我是先处理出 [1,999……9] 的答案(那个999……9 < X)
然后按位往下扫。计算最高位为 i 的数有多少个、i在非最高位出现了多少次。
明明每天睡得非常多,为什么还是困呢Qwq
一定是蚊子有毒。剧毒。
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
long long ans[10];
int main()
{
// freopen("test.in","r",stdin);
int i,j,k;
long long t,y,l,r;
scanf("%lld%lld",&l,&r),l--;
if(l<0)ans[0]++,l=0;
for(t=1,i=0,y=9;y<l;y=y*10+9,i++,t*=10)
{
ans[0]-=t*i*9/10;
for(j=1;j<10;j++)
{
ans[j]-=t*i*9/10;
ans[j]-=t;
}
}
for(t=1,i=0,y=9;y<r;y=y*10+9,i++,t*=10)
{
ans[0]+=t*i*9/10;
for(j=1;j<10;j++)
{
ans[j]+=t*i*9/10;
ans[j]+=t;
}
}
for(t=1e13,i=13;t>l;i--,t/=10);
for(bool flag=1;i>=0;i--,t/=10)
{
for(j=0;j<10;j++)ans[j]-=t*i/10*(l/t-flag);
if(flag)flag=0;else if(l/t)ans[0]-=t;
for(j=1;j<l/t;j++)ans[j]-=t;
ans[l/t]-=(l+1-l/t*t),l%=t;
}
for(t=1e13,i=13;t>r;i--,t/=10);
for(bool flag=1;i>=0;i--,t/=10)
{
for(j=0;j<10;j++)ans[j]+=t*i/10*(r/t-flag);
if(flag)flag=0;else if(r/t)ans[0]+=t;
for(j=1;j<r/t;j++)ans[j]+=t;
ans[r/t]+=(r+1-r/t*t),r%=t;
}
printf("%lld",ans[0]);for(i=1;i<10;i++)printf(" %lld",ans[i]);
return 0;
}
【BZOJ1833】【ZJOI2010】数字计数 数位DP的更多相关文章
- UVA.1640.The Counting Problem / BZOJ.1833.[ZJOI2010]数字计数(数位DP)
题目链接 \(Description\) 求\([l,r]\)中\(0,1,\cdots,9\)每个数字出现的次数(十进制表示). \(Solution\) 对每位分别DP.注意考虑前导0: 在最后统 ...
- Luogu P2602 [ZJOI2010]数字计数 数位DP
很久以前就...但是一直咕咕咕 思路:数位$DP$ 提交:1次 题解:见代码 #include<cstdio> #include<iostream> #include<c ...
- 洛谷P2602 [ZJOI2010]数字计数(数位dp)
数字计数 题目传送门 解题思路 用\(dp[i][j][k]\)来表示长度为\(i\)且以\(j\)为开头的数里\(k\)出现的次数. 则转移方程式为:\(dp[i][j][k] += \sum_{t ...
- [ZJOI2010]数字计数 数位DP
最近在写DP,今天把最近写的都放上来好了,,, 题意:给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 首先询问的是一个区间,显然是要分别求出1 ~ r ,1 ...
- [luogu2602 ZJOI2010] 数字计数 (数位dp)
传送门 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a.b,含义如上所述. Output ...
- 【题解】P2602 数字计数 - 数位dp
P2602 [ZJOI2010]数字计数 题目描述 给定两个正整数 \(a\) 和 \(b\) ,求在 \([a,b]\) 中的所有整数中,每个数码(digit)各出现了多少次. 输入格式 输入文件中 ...
- bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)
1833: [ZJOI2010]count 数字计数 题目:传送门 题解: 今天是躲不开各种恶心DP了??? %爆靖大佬啊!!! 据说是数位DP裸题...emmm学吧学吧 感觉记忆化搜索特别强: 定义 ...
- bzoj1833: [ZJOI2010]count 数字计数 数位dp
bzoj1833 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a.b,含义如上所述. O ...
- [bzoj1833][ZJOI2010]count 数字计数——数位dp
题目: (传送门)[http://www.lydsy.com/JudgeOnline/problem.php?id=1833] 题解: 第一次接触数位dp,真的是恶心. 首先翻阅了很多很多一维dp,因 ...
- [bzoj1833][ZJOI2010]数字计数(数位DP)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1833 分析:简单的数位DP f[i][j][k]表示在i位数.最高位j的所有数字中k的 ...
随机推荐
- .Net4.0 ashx页面报错:检测到有潜在危险的Request.Form值(转)
原地址:http://zzhi191.blog.163.com/blog/static/1350849520111116518067/ web开发中难免要多到ajax技术. asp.net中我们处理a ...
- 【python】【转】python中isinstance判断变量类型用法
来源 http://www.jb51.net/article/15696.htm 在Python中只需要使用内置的函数isinstance,使用起来非常简单,比如下面的例子: 复制代码 代码如下: c ...
- Sharepoint 问题集锦 - external list (外部列表)
使用Sharepoint开发过程中遇到的问题总结. 错误1: Unable to display this Web Part. To troubleshoot the problem, open th ...
- RestKit:iOS开发必备,告别众多无聊代码
http://www.csdn.net/article/2014-04-15/2819312-RestKit-frameworkRestKit是一款专为iOS设计的Objective-C框架,旨在与R ...
- struts2 拦截器1
action invoke前会调用,invoke后会调用 public class FirstInterceptor extends AbstractInterceptor{ @Override pu ...
- jquery事件之event.target用法详解
1. 定义和用法: 显示哪个 DOM 元素触发了事件: $("p, button, h1, h2").click(function(event){ $("div" ...
- matlab的cell数组
matlab的cell数组 元胞数组: 元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵.组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每 ...
- New Distinct Substrings
spoj705:http://www.spoj.com/problems/SUBST1/ 题意:和spoj694一样,只是数据范围变大了. 题解:同spoj694. #include<iostr ...
- http://www.cnblogs.com/xwdreamer/archive/2012/02/21/2360818.html
http://www.cnblogs.com/xwdreamer/archive/2012/02/21/2360818.html
- Keil C51调试程序时, 对ROM的查看以及RAM 查看或修改
在Keil 里使用 DeBug 模式时,如要 查看外部 RAM 的数据 或查看 ACC 的内容可以进行以下操作; sysGetTxMode: LCALL Com0185(C:2B95) ,sysGet ...