jzoj1265-Round Numbers【数位统计】

正题


大意

求一个闭区间内二进制0的个数大于等于1的个数的数的数量。


解题思路

我们将二进制考虑成01串
我们先不考虑有前导零的情况:
kk个空位中放i个0,别的都放1的方案数为CikCki(我们将一个位置放0表示成取出这个位置的数)。
然后我们可以先计算1r1∼r,然后减去1l11∼l−1就是lrl∼r这个区间内的数量。
我们考虑计算:
如一个数1212,我们将它转换为二进制1001010010。我们先计算1100001∼10000中的数量,我们可以先枚举位数,然后我们保证第一位是1后后面的就是在剩余空位中放置满足个数要求的情况。
然后我们开始考虑后面的,我们可以发现如果我们从大到小枚举到一位数是11,那么如果我们将其改为0然后后面无论如何填入都无需考虑大小,所有我们可以利用这个性质计算,如果是11就该为0统计答案,之后该回11<script type="math/tex" id="MathJax-Element-2245">1</script>继续往后(因为这个位数是0的情况都计算完了)。


Code

#include<cstdio>
#include<cmath>
#define ll long long
#define find_c(x,y) c[x+1][y+1]
#define w 31
using namespace std;
ll first,second,c[w+2][w+2],f[w+2];
void make_C()
{c[1][1]=1;c[2][1]=1;c[2][2]=1;for (ll i=3;i<=w+1;i++)for (ll j=1;j<=i;j++)c[i][j]=c[i-1][j]+c[i-1][j-1];//预处理组合数
}
int answer(ll x,ll y)//计算在k个位中填01并且前面已经有y个1的合法情况总数
{int ans=0;for (int i=0;i<=x;i++)if (i>=x-i+y)//满足条件ans+=find_c(x,i);//计算答案return ans;
}
int work(ll x)
{if (x==0) return 0;ll k=log2(x)+1,ans=0,now=1,one=1;for (int i=1;i<k;i++)ans+=answer(i-1,1),now<<=1;//计算答案k--;now>>=1;//无视第一位(前面已经计算过了)while(k){if (x&now) ans+=answer(k-1,one-1),one+=1;//可以计算答案else one-=1;//统计零一个数k--;now>>=1;//下一位}if (one<=0) ans++;//判断本身是否满足要求return ans;
}
int main()
{make_C();scanf("%d%d",&first,&second);printf("%d",work(second)-work(first-1));
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323958.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

asp.net core MVC 过滤器之ActionFilter过滤器(二)

简介 Action过滤器将在controller的Action执行之前和之后执行相应的方法。 实现一个自定义Action过滤器 自定义一个全局异常过滤器需要实现IActionFilter接口 public class ActionFilter : IActionFilter { public void OnActionExecuted(ActionExecutedContext context) …

【最全最详细】publiccms使用教程

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂拉取项目&#xff08;项目部署阶段&#xff09;1.首先需要从gitee中拉取项目&#xff0c;地址为&#xff1a;public cms项目地址 &#xff0c;在idea中点击文件--》新建--》来自版本控制的项…

NIO、Netty

https://bright-boy.gitee.io/technical-notes/#/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/netty

学习 Spring Boot 知识看这一篇就够了

转载自 学习 Spring Boot 知识看这一篇就够了 从2016年因为工作原因开始研究 Spring Boot &#xff0c;先后写了很多关于 Spring Boot 的文章&#xff0c;发表在技术社区、我的博客和我的公号内。粗略的统计了一下总共的文章加起来大概有六十多篇了&#xff0c;其中一部分是在…

jzoj1266,P1879-[USACO06NOV]玉米田Corn Fields【状态压缩,dp】

正题 评测记录&#xff1a;https://www.luogu.org/recordnew/lists?uid52918&pidP1879 大意 有n*m的矩阵&#xff0c;有些地方可以放&#xff0c;有些不可以放&#xff0c;不可以相邻的放&#xff0c;求放置方法总数。 解题思路 先用二进制表示每一行的是否可以放置的状…

越努力越幸运,三年了!!!

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂”今天非常的开心&#xff0c;因为考了三年的驾照终于考完了。在大厅候考的时候&#xff0c;从10.40等到了1.40,坐在下面能看到LED上有自己的名字&#xff0c;但是前面等待的有200多人………

为什么我们要使用Async、Await关键字

前不久&#xff0c;在工作中由于默认&#xff08;xihuan&#xff09;使用Async、Await关键字受到了很多质问&#xff0c;所以由此引发这篇博文“为什么我们要用Async/Await关键字”&#xff0c;请听下面分解&#xff1a; Async/Await关键字 Visual Studio&#xff08;.net fra…

go web

模块&#xff1a;go mod init webDemo 设置web服务器 方法一&#xff1a; http.ListenAndServe("localhost:8080", nil)方法二&#xff1a; server : http.Server{Addr: "localhost:8080",Handler: nil,} server.ListenAndServe()例 package mainimpor…

一次惊险的跳槽面试经历(阿里/美团/头条/网易/有赞...)

转载自 一次惊险的跳槽面试经历&#xff08;阿里/美团/头条/网易/有赞...) 每次说因为生活成本的时候面试官都会很惊奇&#xff0c;难道有我们这里贵&#xff1f;好想直接给出下面这张图&#xff0c;厦门的房价真的好贵好贵好贵。。。 面试过程 有兴趣加入阿里的欢迎发简历…

利用bladex+avue实现一对多的关系

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂”今天&#xff0c;记录一篇技术文章吧&#xff0c;也是解决了好久才解决掉的&#xff08;说来也惭愧&#xff09;。涉及技术前端&#xff1a;vue&#xff0c;element ui后端框架&#xff…

jzoj1267-路障【最短路,SPFA】

正题 大意 一张无向图&#xff0c;求次短路。 解题思路 我们先求出最短路并且求出点1和点n到每个点的距离&#xff0c;然后枚举边&#xff0c;将第一个点离点1的距离&#xff0c;和第二个点离点n的距离加上边权如果不是最短路就记录&#xff0c;然后取最小值。 IOI赛制不需要…

.NET中的高性能应用

本文要点 .NET自4.0以来得到了大幅的性能提升&#xff0c;很值得重新考虑一下基于旧版本.NET框架所做的假定。在讨论性能时垃圾回收是个重复出现的主题&#xff0c;它带来了许多CLR和语言的提升&#xff0c;比如引用返回和ValueTask在内存分配上更细粒度度量的性能分析API会成…

go 数组 切片 映射

文章目录数组切片映射数组 package mainimport "fmt"func main() {fmt.Println("array coding........")//var array [5]int//array[2] 2//var array [5]int{0, 1, 2, 3, 4}//array : [5]int{0, 1, 2, 3, 4}array : [...]int{0, 1, 2, 3, 4}//array : […

利用bladex+avue实现下拉数据源展示

“ 大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;????雄雄的小课堂???? ”昨天给大家整理了下如何使用bladex实现多表查询的方法&#xff0c;今天我们趁热打铁&#xff0c;顺便看看下拉列表的实现。 需求 我们经常会有这样的需求&#xff0c;…

汇编语言(一)之反转字符串输出

BASED ADDRESSING反转输出 程序运行&#xff1a; 代码&#xff1a; datas segmentstring db BASED ADDRESSING$ count dw $-string-1 ;计算string的长度&#xff0c;$为当前地址&#xff0c;-1为去掉字符串结束符$srcsTip db SRC string:$ dstsTip db 0…

2018/7/17-纪中某C组题【jzoj4024,jzoj4025,jzoj2136,jzoj2137】

前言 今天第一道题调了一会就好了&#xff0c;然后一直在调第二道题&#xff0c;然后也没调出来。赛后之后发现第2道题我想的是正解&#xff0c;结果依旧调了很久。其他都还好。 今日分数 Rankperson分数4zyc27014xxy18018hjq15018xjq15018lw15023hzb12023蒟蒻12029lrz110 正…

前后端分离项目部署上线详细教程

“ 大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;????雄雄的小课堂???? ”今天&#xff0c;给大家分享的是&#xff0c;SpringbootVue项目如何部署上线的详细步骤。 代码编辑器 前端&#xff1a;Webstorm 2021.1.2 后端&#xff1a;IntelliJ …

.Net Core2.0下使用Dapper遇到的问题

今天成功把.Net Framework下使用Dapper进行封装的ORM成功迁移到.Net Core 2.0上&#xff0c;在迁移的过程中也遇到一些很有意思的问题&#xff0c;值得和大家分享一下。下面我会还原迁移的每一个过程&#xff0c;以及在此过程中遇到的问题和处理这些问题的方法。 一、迁移前的…

go 方法集

go 接口 方法集 1、如果使用 指针接收者 来实现一个接口&#xff0c;那么只有指向那个类型的指针才能实现对应的接口 2、如果使用 值接收者 go来实现一个接口&#xff0c;那么那个类型的值和指针接收者都能够实现对应的接口 go 嵌入类型 内部类型实现接口&#xff0c;内部类…

汇编语言(二)之数值求和

输入一串数字&#xff0c;求和 运行结果&#xff1a; 程序代码&#xff1a; datas segmentx db ? y db ? z db ?xInputPrompt db Enter a number x$ yInputPrompt db 0dh,0ah,Enter a number y$ zOutputPrompt db 0dh,0…