[BZOJ1833] [ZJOI2010]count 数字计数
来源:互联网 发布:起点中文网网络设置 编辑:程序博客网 时间:2024/04/30 01:21
[ZJOI2010]count 数字计数
Description
Input
Output
Sample Input
Sample Output
HINT
30%的数据中,
100%的数据中,
Solution :
记
Code :
/************************************************************************* > File Name: bzoj1833.cpp > Author: Archer ************************************************************************/#include <bits/stdc++.h>#include <ext/pb_ds/assoc_container.hpp>#include <ext/pb_ds/hash_policy.hpp>using namespace std;const int N = 22;typedef long long ll;#define MS(_) memset(_, 0xff, sizeof(_))struct info{ ll ans[N], cnt; info() {memset(ans, 0, sizeof(ans)); cnt = 0;}}dp[N][2];char str[N];int vis[N][2];ll L, R;info operator +(const info &x, const info &y){ info z; for (int i = 0; i <= N; i++) z.ans[i] = x.ans[i] + y.ans[i]; return z;}inline info dfs(int dep, int less){ info ret, pack; if (~vis[dep][less]) { vis[dep][less] = 1; return dp[dep][less]; } vis[dep][less] = 1; if (dep >= strlen(str)){ ret.cnt = 1; dp[dep][less] = ret; return ret; } for (int i = 0; i <= 9; i++) if (less || i <= str[dep] - '0'){ pack = dfs(dep + 1, (less || i < str[dep] - '0') ? 1 : 0); ret = ret + pack; ret.ans[i] += pack.cnt; } return dp[dep][less] = ret;}int main(){ scanf("%lld%lld", &L, &R); L--; MS(vis); sprintf(str, "%lld", L); info Lans, pack; for (int i = 0; i < strlen(str); i++) for (int j = 1; j <= (i == 0 ? str[0]-'0' : 9); j++){ info pack = dfs(i + 1, (i == 0 && j == str[0] - '0') ? 0 : 1); Lans = Lans + pack; Lans.ans[j] += pack.cnt; } sprintf(str, "%lld", R); info Rans; MS(vis); for (int i = 0; i < strlen(str); i++) for (int j = 1; j <= (i == 0 ? str[0]-'0' : 9); j++){ info pack = dfs(i + 1, (i == 0 && j == str[0] - '0') ? 0 : 1); Rans = Rans + pack; Rans.ans[j] += pack.cnt; } for (int i = 0; i < 9; i++) printf("%lld ", Rans.ans[i] - Lans.ans[i]); printf("%lld\n", Rans.ans[9] - Lans.ans[9]); 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)
- android 发送短信
- 环形缓冲区
- MySQL UPDATE语句中的一个诡异现象
- 依赖注入(控制反转)IOC
- Thrift使用指南
- [BZOJ1833] [ZJOI2010]count 数字计数
- Oracle复制表和存储过程编写注意事项
- linux(centos)搭建SVN服务器
- 更多的结构化命令 for while until
- Android:fragment中嵌套viewpager,vierpager中有多个fragment
- 大牛面试指南
- Android属性动画Property Animation(二)
- Android Quick Return Bar导航条
- Oracle分区表的使用