首页 > 其他 > 详细

【题解】Luogu P1582 倒水 二进制

时间:2019-10-29 10:33:44      阅读:70      评论:0      收藏:0      [点我收藏+]

bitset大法好啊

显然的二进制题,每个瓶子里的水只可能是$2^i$

所以要剩下$k$个瓶子,就相当于最后总的水量的二进制中的$1$的个数$≤k$

从最后一位开始添$1$看什么时候这个数的$1$的个数$≤k$就行了

code

技术分享图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 namespace gengyf{
 5 inline int read(){
 6     int x=0,f=1;char s=getchar();
 7     while(s<0||s>9){if(s==-)f=-1;s=getchar();}
 8     while(s>=0&&s<=9){x=x*10+s-0;s=getchar();}
 9     return f*x;
10 }
11 ll n,k,ans;
12 ll lowbit(ll x){return x&-x;}
13 int main(){
14     n=read();k=read();
15     bitset<60>a(n);
16     while(a.count()>k){
17         ans+=lowbit(n);
18         n+=lowbit(n);
19         a=n;
20     }
21     printf("%lld",ans);
22     return 0;
23 }
24 /*
25  affection 挚爱
26  adopt 采纳
27  administration 管理
28  agent 代理
29 */
30 }
31 signed main(){
32     gengyf::main();
33     return 0;
34 }
View Code

 

【题解】Luogu P1582 倒水 二进制

原文:https://www.cnblogs.com/gengyf/p/11756604.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!