bzoj 1833 数位dp
2024-09-02 03:21:53
很裸的数位dp。
#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PII pair<int, int>
#define y1 skldjfskldjg
#define y2 skldfjsklejg
using namespace std; const int N = 2e5 + ;
const int M = 1e7 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = ; LL f[][], L, R;
int s[], tot; LL dp(int p, int cnt, bool limit, bool zero, int val) {
if(p == -) return cnt;
if(!limit && !zero && ~f[p][cnt]) return f[p][cnt];
LL ans = ;
int up = limit ? s[p] : ;
for(int i = ; i <= up; i++) {
if(!val) ans += dp(p - , cnt + (!zero && (!i)), limit && (i == up), zero && (!i), val);
else ans += dp(p - , cnt + (val == i), limit && (i == up), zero && (!i), val);
}
if(!limit && !zero) f[p][cnt] = ans;
return ans;
} LL solve(LL x, int val) {
if(x < ) return ;
tot = ;
for(LL i = x; i; i /= ) s[tot++] = i % ;
memset(f, -, sizeof(f));
return dp(tot - , , , , val);
} int main() {
scanf("%lld%lld", &L, &R);
for(int i = ; i < ; i++) {
printf("%lld ", solve(R, i) - solve(L - , i));
}
puts("");
return ;
} /*
*/
最新文章
- osg绘制一个球体
- .net 获取AppDomain创建了多少
- 创建生产订单函数BAPI_PRODORD_CREATE
- [工作积累] 32bit to 64bit: array index underflow
- echarts 地图与时间轴混搭
- HOJ1014
- C指针(转)
- JavaFX 简单3D演示样例
- JRE System Library [JavaSE-1.7](unbound)
- springboot~如何去掌握它(新手可以看看)
- hash(散列函数)
- SAP S/4嵌入式分析——虚拟数据模型(VDM)
- java中Arrays的用法
- Architecture.SOLID-Principles
- ASP.NET Web API实践系列01,以ASP.NET Web Form方式寄宿
- Windows2008|2003超出最大连接数
- 6.15-初识JSP、javaweb
- db2表空间及日志文件调整
- 规范大于编码-我的javaWeb开发规范
- yield方法