POJ 3252 Round Numbers(数位dp)
来源:互联网 发布:淘宝运营助理面试技巧 编辑:程序博客网 时间:2024/06/05 23:46
http://poj.org/problem?id=3252
求区间[l,r]中二进制0的个数不小于1的个数的数的数目。
简单数位dp。
#include<cstdio>#include<cstring>#include<string>#include<cctype>#include<iostream>#include<set>#include<map>#include<cmath>#include<vector>#include<stack>#include<queue>#include<algorithm>using namespace std;int dp[35][70];int a[35];int dfs(int pos, int sta, bool lead, bool limit) { if(pos == -1) return sta >= 32; if(!lead && !limit && dp[pos][sta] >= 0) return dp[pos][sta]; int up = limit ? a[pos] : 1, ans = 0; for(int i = 0; i <= up; i++) { if(lead && i == 0) ans += dfs(pos-1, sta, true, limit && i == a[pos]); else { ans += dfs(pos-1, sta+(i==0?1:-1), false, limit && i == a[pos]); } } if(!lead && !limit) dp[pos][sta] = ans; return ans;}int solve(int x){ int pos = 0; while(x) { a[pos++] = x&1; x >>= 1; } return dfs(pos-1, 32, true, true);}int main(){ int l, r; memset(dp, -1, sizeof dp); scanf("%d%d", &l, &r); printf("%d\n", solve(r)-solve(l-1));}
0 0
- poj 3252 Round Numbers(数位dp)
- poj 3252 Round Numbers(数位dp)
- POJ 3252 round numbers(数位DP)
- POJ 3252 Round Numbers(数位dp)
- POJ 3252 Round Numbers (数位dp)
- POJ 3252 Round Numbers(数位DP)
- POJ-3252 Round Numbers (数位DP)
- POJ 3252 - Round Numbers(数位dp)
- POJ 3252 Round Numbers(数位 DP)
- poj 3252 Round Numbers (数位DP)
- POJ 3252 Round Numbers (数位dp)
- POJ 3252Round Numbers(数位DP)
- POJ 3252 Round Numbers(数位dp)
- poj 3252 Round Numbers(数位dp)
- poj 3252 Round Numbers(数位DP)
- POJ 3252Round Numbers(数位dp)
- POJ 3252 Round Numbers (数位dp)
- POJ 3252 Round Numbers(数位DP)
- HDU - 1176----免费馅饼
- struck(结构化SVM用于视觉跟踪)--源代码详解--main.cpp
- Set up vimrc
- 基础知识
- uml的总结
- POJ 3252 Round Numbers(数位dp)
- Java运行时异常
- 精度--洛谷 P1378 油滴扩展
- 360浏览器调用selenium
- 设备,驱动,总线的结构
- 题目1073:杨辉三角形
- LeetCode: Max Consecutive Ones
- C++中的初始化和引用
- 容斥原理