BZOJ1833 [ZJOI2010]count 数字计数
来源:互联网 发布:阿里云数据库的好处 编辑:程序博客网 时间:2024/04/30 00:55
数位DP模板题
然而我并不会-_-orz了一发hzwer学长的代码,终于学会了数位DP
设f[i][j]表示i位,开头为j的方案数(算前导零)
先预处理f数组
求a以内的答案时,先加上所有位数不足a的位数的,然后从高位到低位枚举当前位是几,计入答案,然后定下这一位,枚举下一位
基本把黄学长的代码抄了一遍-_-
复杂度O(位数*10*更新复杂度)
#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<cmath>#include<ctime>#include<algorithm>#include<iomanip>#include<vector>#include<stack>#include<queue>#include<map>#include<set>#include<bitset>using namespace std;#define MAXN 1010#define MAXM 1010#define ll long long#define INF 1000000000#define MOD 1000000007#define eps 1e-8struct data{ ll x[10]; data(){ memset(x,0,sizeof(x)); } friend data operator +(data x,data y){ int i; data z; for(i=0;i<=9;i++){ z.x[i]=x.x[i]+y.x[i]; } return z; } friend data operator -(data x,data y){ int i; data z; for(i=0;i<=9;i++){ z.x[i]=x.x[i]-y.x[i]; } return z; }};data f[15][10];ll mi[15];data cal(ll x){ int i,j; data re=f[1][0]; int len=13; if(!x){ return re; } while(mi[len]>x){ len--; } for(i=1;i<len;i++){ for(j=1;j<=9;j++){ re=re+f[i][j]; } } int y=x/mi[len]; for(i=1;i<y;i++){ re=re+f[len][i]; } x%=mi[len]; re.x[y]+=x+1; for(i=len-1;i;i--){ y=x/mi[i]; for(j=0;j<y;j++){ re=re+f[i][j]; } x%=mi[i]; re.x[y]+=x+1; } return re;}int main(){ int i,j,k; for(i=0;i<=9;i++){ f[1][i].x[i]=1; } mi[1]=1; for(i=2;i<=13;i++){ mi[i]=mi[i-1]*10; } for(i=2;i<=13;i++){ for(j=0;j<=9;j++){ for(k=0;k<=9;k++){ f[i][j]=f[i][j]+f[i-1][k]; } f[i][j].x[j]+=mi[i]; } } ll l,r; scanf("%lld%lld",&l,&r); data ans=cal(r)-cal(l-1); printf("%lld",ans.x[0]); for(i=1;i<=9;i++){ printf(" %lld",ans.x[i]); } printf("\n"); return 0;} /* */
0 0
- BZOJ1833: [ZJOI2010]count 数字计数
- [BZOJ1833][ZJOI2010]count数字计数
- [BZOJ1833] [ZJOI2010]count 数字计数
- BZOJ1833 [ZJOI2010]count 数字计数
- BZOJ1833: [ZJOI2010]count 数字计数
- bzoj1833: [ZJOI2010]count 数字计数
- BZOJ1833: [ZJOI2010]count 数字计数
- bzoj1833: [ZJOI2010]count 数字计数
- BZOJ1833 [ZJOI2010]count 数字计数
- bzoj1833 [ZJOI2010]count 数字计数
- bzoj1833: [ZJOI2010]count 数字计数 数位dp
- [BZOJ1833] [ZJOI2010]count 数字计数 && 数位DP
- 【bzoj1833】[ZJOI2010]count 数字计数 数位DP
- Bzoj1833:[ZJOI2010]count 数字计数:数位dp
- bzoj1833 [ZJOI2010]count 数字计数(数位)
- bzoj1833[ZJOI2010]count 数字计数 数位DP
- [BZOJ1833][ZJOI2010]count 数字计数(数位dp)
- bzoj1833: [ZJOI2010]count 数字计数(数位Dp)
- solr多集合配置
- python 迭代器为什么无法第二次打印元素?
- BZOJ2809——[Apio2012]dispatching
- Stirling数
- jfinal 报异常:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getJspConfigDescriptor
- BZOJ1833 [ZJOI2010]count 数字计数
- nyoj 1085 部分和(数学)
- Activity 切换运行模式后的意外情况
- 测试脚本被调用的参数是否正确
- git简单使用方法
- iOS - block
- 安卓_java环境变量配置error
- BZOJ2809——[Apio2012]dispatching
- 《JavaScript程序设计》课堂交流区问题汇总(进阶篇)