[USACO06NOV] Round Numbers S
2024-09-08 18:54:37
题目
\(\texttt{[USACO06NOV] Round Numbers S}\)
分析
数位 \(dp\) 入门题
一般我们需要当前位置 \(pos\),有无前导零 \(lead\),高位标记 \(limit\)
然后就依题弄
\(Code\)
#include<cstdio>
#include<cstring>
using namespace std;
int l , r , f[40][40][40] , a[40] , len;
int dfs(int pos , int s0 , int s1 , int lead , int limit)
{
if (!pos) return s0 >= s1;
if (f[pos][s0][s1] != -1 && !lead && !limit) return f[pos][s0][s1];
int res = 0;
for(register int i = 0; i <= (limit ? a[pos] : 1); i++)
{
if (!i && lead) res += dfs(pos - 1 , s0 , s1 , 1 , limit && (i == a[pos]));
else res += dfs(pos - 1 , s0 + (i == 0) , s1 + (i == 1) , 0 , limit && (i == a[pos]));
}
if (!lead && !limit) f[pos][s0][s1] = res;
return res;
}
int solve(int x)
{
len = 0;
while (x) a[++len] = x & 1 , x >>= 1;
memset(f , 255 , sizeof f);
return dfs(len , 0 , 0 , 1 , 1);
}
int main()
{
scanf("%d%d" , &l , &r);
printf("%d\n" , solve(r) - solve(l - 1));
}
最新文章
- EaeyUI
- Vector Calculus
- vim快捷键总结
- django 笔记
- hdu----(2848)Repository(trie树变形)
- ExtJS 5.0版本问题+Sencha cmd
- IPv6介绍
- UVA - 11020 Efficient Solutions(Multiset)
- 获取listboxitem在ListBox中的index并转换成abcd
- hdu 1298 T9
- hibernate 根据数据库表反生成javaBean
- SVN同步时忽略特定文件或文件夹
- 更优雅的方式: JavaScript 中顺序执行异步函数
- java实现:将一个数各个位数相加
- How To Upgrade ASMLib Kernel Driver as Part of Kernel Upgrade? (文档 ID 1391807.1)
- 2018-03-11 20165235祁瑛《Java程序设计》第二周学习总结
- python_WSGI接口
- word文档的python解析
- IP与十进制相互转化
- mongodb first