BZOJ1833 数位DP
数位DP随便搞搞.
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- #include<cmath>
- #include<ctime>
- #include<string>
- #include<iomanip>
- #include<algorithm>
- #include<map>
- using namespace std;
- #define LL long long
- #define FILE "dealing"
- #define up(i,j,n) for(LL i=j;i<=n;++i)
- #define db double
- #define ull unsigned long long
- #define eps 1e-10
- #define pii pair<LL,LL>
- LL read(){
- LL x=0,f=1,ch=getchar();
- while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
- while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
- return f*x;
- }
- const LL maxn=102,maxm=20000,mod=10000007,inf=(LL)(2e9);
- template<class T>bool cmax(T& a,T b){return a<b?a=b,true:false;}
- template<class T>bool cmin(T& a,T b){return a>b?a=b,true:false;}
- template<class T>T min(T& a,T& b){return a<b?a:b;}
- template<class T>T max(T& a,T& b){return a>b?a:b;}
- LL a,b,w[20],r[20],cnt[maxn],f[20][20],p,mi[maxn],g[maxn][maxn],sum[maxn];
- LL s[20];
- void dfs(LL pos,bool flag){
- if(pos==-1)return;
- if(!flag){
- for(LL i=1;i<=9;i++)cnt[i]+=p*(f[pos][i]+mi[pos]*s[i]);
- cnt[0]+=p*(f[pos][0]+s[0]*mi[pos]);
- return;
- }
- for(LL i=0;i<=w[pos];i++){
- bool flg=0;
- for(LL j=1;j<10;j++)if(s[j]){flg=1;break;}
- if(flg||i)s[i]++;
- dfs(pos-1,w[pos]==i);
- if(flg||i)s[i]--;
- }
- }
- int main(){
- freopen(FILE".in","r",stdin);
- freopen(FILE".out","w",stdout);
- a=read(),b=read()+1;
- mi[0]=1;for(LL i=1;i<=14;i++)mi[i]=mi[i-1]*10;
- for(LL i=1;i<=14;i++){
- for(LL j=0;j<=9;j++){
- f[i][j]=f[i-1][j]*10+mi[i-1];
- }
- }
- w[0]=0;
- while(b){
- w[++w[0]]=b%10;
- b/=10;
- }
- memset(s,0,sizeof(s));
- p=1;dfs(w[0],1);
- up(i,1,w[0]-1)cnt[0]-=mi[i-1];
- LL Max=w[0];
- memset(w,0,sizeof(w));
- while(a){
- w[++w[0]]=a%10;
- a/=10;
- }
- memset(s,0,sizeof(s));
- up(i,1,w[0]-1)cnt[0]+=mi[i-1];
- w[0]=Max;
- p=-1;dfs(Max,1);
- up(i,0,8)printf("%lld ",cnt[i]);printf("%lld\n",cnt[9]);
- return 0;
- }
BZOJ1833 数位DP的更多相关文章
- 数位DP入门:(bzoj1833+3209)
//我是来看文章创建时间的= = 膜拜了一下蔡大神.... 人生第一道自己写的数位DP...好吧以前是看题解然后也不知道为什么就过了的>_< 虽然说现在还是只会裸题= = 数位DP介绍: ...
- bzoj1833: [ZJOI2010]count 数字计数 数位dp
bzoj1833 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a.b,含义如上所述. O ...
- BZOJ1833 ZJOI2010 count 数字计数 【数位DP】
BZOJ1833 ZJOI2010 count 数字计数 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包 ...
- 【BZOJ-1833】count数字计数 数位DP
1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 2494 Solved: 1101[Submit][ ...
- [bzoj1833][ZJOI2010]count 数字计数——数位dp
题目: (传送门)[http://www.lydsy.com/JudgeOnline/problem.php?id=1833] 题解: 第一次接触数位dp,真的是恶心. 首先翻阅了很多很多一维dp,因 ...
- 【BZOJ1833】[ZJOI2010] count 数字计数(数位DP)
点此看题面 大致题意: 求在给定的两个正整数\(a\)和\(b\)中的所有整数中,\(0\sim9\)各出现了多少次. 数位\(DP\) 很显然,这是一道数位\(DP\)题. 我们可以用前缀和的思想, ...
- 【数位dp】bzoj1833: [ZJOI2010]count 数字计数
数位dp姿势一直很差啊:顺便庆祝一下1A Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a ...
- BZOJ1833 [ZJOI2010]count 数字计数 【数学 Or 数位dp】
题目 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入格式 输入文件中仅包含一行两个整数a.b,含义如上所述. 输出格式 输出文件中包含一行10个整数, ...
- BZOJ1833(数位dp)
这个数位dp倒是没什么限制条件,只是需要在过程中把每个数字出现次数记录一下即可.记忆化返回时数学算出.框架还是套板子. #include <cstdio> #include <cma ...
随机推荐
- Qt编程简介与基本知识
1. 什么是Qt? Qt是一个基于C++的跨平台应用程序和UI开发框架.它包含一个类库,和用于跨平台开发及国际化的工具. 由挪威Trolltech公司开发,后被Nokia收购,目前被Digia公司收购 ...
- [转]Windows10内置Linux子系统初体验
Windows10内置Linux子系统初体验 https://www.jianshu.com/p/bc38ed12da1d
- 【VBS】使用Visual Studio调试VBS程序
首先要确保机器上安装了Visual Stuido, 然后打开命令行窗口执行如下命令,会弹出是否使用Visual Studio进行调试的确认窗口. 点[是]进行调试. WScript.exe [vbs文 ...
- hibernate uuid
- 重读金典------高质量C编程指南(林锐)-------第七章 内存管理
2015/12/10补充: 当我们需要给一个数组返回所赋的值的时候,我们需要传入指针的指针.当我们只需要一个值的时候,传入指针即可,或者引用也可以. 结构大致如下: char* p = (char*) ...
- PropertiesTest
import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; public clas ...
- VueJS事件处理器v-on
事件监听可以使用 v-on 指令. v-on:click表达式 HTML: <!DOCTYPE html> <html> <head> <meta chars ...
- typedef,结构体,共用体,联合体
typedef的用途: 封装数据类型,方便移植 简化函数指针的定义 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/ ...
- linux init->upstart->systemd
http://en.wikipedia.org/wiki/Init init From Wikipedia, the free encyclopedia This article is abo ...
- java面试笔记(2019)
1. 堆啊,栈啊,内存溢出原因 2. Dubbo原理 3. Reids线程 4. 线程池安全 5. linux查看线程命令 6. ABA