Usaco 2006Nov Round Numbers
题意:定义Round Number为二进制表示下0的个数大于等于1的个数的数。求[l,r]中有多少圆环数
我们把二进制位用一颗01二叉树表示,如下:

我们依据二进制位来遍历这颗线段树,如果当前高度对应的位为1,则遍历左右两颗子树,否则遍历左子树。dfs的过程中我们可以用记忆化来减少枚举状态,同时注意到那些最靠左的子树在遍历的过程中是可以重计数的,这样可以减少需要枚举的状态
尽管据说此题是裸的数位dp,可是我还是不会呀QAQ
#include<bits/stdc++.h>
using namespace std;
int f[][][],s[];
int dfs(int all,int c1,int c2,int f1,int f2){
if(!all){
if(c1>=c2)return ;
return ;
}
if(!f1&&!f2&&f[all][c1][c2]!=-)return f[all][c1][c2];
int tot=,last=f2?s[all]:;
for(int i=;i<=last;i++){
if(f1){
if(!i)tot+=dfs(all-,,,,f2&&(i==s[all]));
else tot+=dfs(all-,c1,c2+,,f2&&(i==s[all]));
}
else{
if(!i)tot+=dfs(all-,c1+,c2,,f2&&(i==s[all]));
else tot+=dfs(all-,c1,c2+,,f2&&(i==s[all]));
}
}
if(!f1&&!f2)f[all][c1][c2]=tot;
return tot;
}
int sum(int x){
int tot=;
memset(s,,sizeof(s));
for(;x;x>>=)s[++tot]=x&;
return dfs(tot,,,,);
}
int main(){
memset(f,-,sizeof(f));
int l,r;
scanf("%d%d",&l,&r);
printf("%d\n",sum(r)-sum(l-));
return ;
}
Usaco 2006Nov Round Numbers的更多相关文章
- POJ 3252 Round Numbers
组合数学...(每做一题都是这么艰难) Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7607 A ...
- Round Numbers(组合数学)
Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10484 Accepted: 3831 Descri ...
- [ACM] POJ 3252 Round Numbers (的范围内的二元0数大于或等于1数的数目,组合)
Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8590 Accepted: 3003 Des ...
- 4-圆数Round Numbers(数位dp)
Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14947 Accepted: 6023 De ...
- POJ3252 Round Numbers —— 数位DP
题目链接:http://poj.org/problem?id=3252 Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Su ...
- poj3252 Round Numbers(数位dp)
题目传送门 Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16439 Accepted: 6 ...
- 题解【POJ3252】Round Numbers
Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, P ...
- 【BZOJ1662】[Usaco2006 Nov]Round Numbers 圆环数 数位DP
[BZOJ1662][Usaco2006 Nov]Round Numbers 圆环数 Description 正如你所知,奶牛们没有手指以至于不能玩"石头剪刀布"来任意地决定例如谁 ...
- [BZOJ1662][POJ3252]Round Numbers
[POJ3252]Round Numbers 试题描述 The cows, as you know, have no fingers or thumbs and thus are unable to ...
随机推荐
- IIS下自定义错误页面配置的两种方式(亲测可行)--IIS服务器
网站自定义错误页面的设置,大家应该都知道它的重要性……不多说,下面带大家一步步在IIS下设置网站自定义错误页面…… 1.首先进入你的网站主页,找到[错误页](注意是IIS下的错误页不是.NET错误页) ...
- 剑指offer(一)
面试题3:二维数组中查找 题目描述: 在一个二维数组中,每一行都按照从左往右递增地顺序排序,每一列都按照从上往下递增的顺序排序.请完成一个函数,输入这样的一个数组和一个整数,判断数组中是否存在该整数. ...
- K - Kia's Calculation (贪心)
Kia's Calculation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- Linux必知必会的目录与启动过程
第1章 /etc/目录 1.1 /etc/sysconfig/network-scripts/ifcfg-eth0 linux第一块网卡的配置文件 [root@znix ~]# cat /etc/sy ...
- 0_Simple__simpleCallback
学习回调函数的基本概念,并在CUDA的任务流中插入基于CPU的主机函数,作为回调函数使用. ▶ 源代码:没有用到的部分被注释起来了 /*multithreading.h*/ #ifndef MULTI ...
- spring boot + thymeleaf 3 国际化
在给spring boot 1.5.6 + thymeleaf 3进行国际化时,踩了一个坑(其实不止一个). 现象: 看到了吧, 就是取值的key, 后面被加了_en_US 或 _zh_CN, 以及前 ...
- 使用qt制作一个简单的计算器
前言:今天使用qt制作了一个很简单的计算器,觉得挺有意思的,所以在这里跟大家分享一下. 这里先跟大家说说使用到的函数: 一.槽连接函数 connect(信号发送者,发送的信号,信号接收者,信号接收者的 ...
- Scrum Meeting Alpha - 2
Scrum Meeting Alpha - 2 NewTeam 2017/10/25 地点:新主楼F座二楼 任务反馈 团队成员 完成任务 计划任务 安万贺 完成了大部分api的测试https://gi ...
- 在昆明网络SEO的走向站外的优化该何去何从?
昨天大概讲了SEO的站内优化,今天我们来讲讲网站站外的优化. 站外主要以第三平台为主,其中包含站外推广:常规推广.外链建设:利用第三方平台优化关键词排名: 1.博客平台,现在有好多博客平台是很不错的, ...
- java 压缩导出多个excel
简单介绍下我实现的功能,首先是我的excel上传,它是以blob字段存储在oracel数据库中的,我实现的是循环遍历blob字段并使用io流进行打包下载,如有需要可自行修改 使用技术有,springM ...