二分

从1到N能整除X的数有【N/X】个

从1到N不能整除X的数有【N-N/X】个

从1到N能整除X且整除Y的个数有【N/X+N/Y-N/(X*Y)】个

 

找到一个数V,使从1到V,至少有cnt1个数不能整除x,剩下的数至少有cnt2个数不能整除y

解:若一个数mid,有

(mid-mid/x)>=cnt1  && (mid-mid/y)>=cnt2 && (mid-mid/(x*y))>=cnt1+cnt2//总共可以分配的个数大于所需求的个数

                   则m符合条件,往比m小的数找

 

给N间房间,一些房间是空的,一间房间是住着人的,有一个人住在某一件房间,他的k只羊住在k间房间,问他的羊离他的最大距离最小为多少

解:枚举每个能住的房间,以改房间为中点,l为最少往两边扩展的房间,r为最多往两边扩展的房间,mid=(l+r)/2,如果该房间左边mid个房间+右边mid个房间可以住大于k只羊,那么最多扩展区间减少,否则最少扩展区间增加

注意:当扩展的房间可以住等于k只羊的时候更新答案,为了保证等于k只羊的时候没有退出二分,判断条件l<=r,每次更新的时候,l=mid+1  或者  r=mid-1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值