P1582 倒水(贪心 + lowbbit)
2024-10-08 09:20:37
https://www.luogu.com.cn/problem/P1582
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,k;
//取出1的个数
int check(int x){
int c = ;
for(;x;x -= x & -x){
c++;
}
return c;
}
int ans;
signed main(){
ios::sync_with_stdio();
cin >> n >> k;
while(check(n) > k){
ans += n & -n;
n += n & -n;
}
cout << ans;
return ;
}
如果要是K= 1的 时候,我们很自然的能想到当能满足2n
的时候是符合题意的,可是数据范围这么大,求2n
显然是不可能的
这时候怎么办?
二进制呢
5 | 101 | 1 | 2 |
n | 二进制下 | lowbit() | 合并后瓶子的个数 |
1 | 1 | 1 | 1 |
2 | 10 | 10 | 1 |
3 | 11 | 1 | 1 |
4 | 100 | 100 | 1 |
我们可以发现,合并后瓶子个数就是二进制中1的个数 ,我们可以借助lowbit()求出1的个数
然后和k比较,如果相等 说明不用
大于 说明瓶子数量不够 我们要加瓶子,那么也应该从最低为加
小于说明不用加了,输出0
最新文章
- 分享jquery实现百叶窗特效的图片轮播
- 手机自适应meta设置
- 团队作业week2
- 手动创建servlet
- angular中的等号(==)判定
- HttpClient构造文件上传
- h5drag事件
- django 配置URLconf和获取值
- 关于 i++ 与 ++i
- 【Python selenium自动化环境配置】4步搞定ChromeDriver版本选择
- pandas导入导出数据-【老鱼学pandas】
- java并发基础
- os.system
- 浅谈IIS 和 asp.net的应用之间的关系
- [CodeForces - 614E] E - Necklace
- Linux 安装 iptables防火墙
- Java基础-异常(Exception)处理
- 《Java程序猿面试宝典》之字符串
- 链家2018春招C/C++开发实习生在线考试编程题
- SD 一轮集训 day3 染色(color)
热门文章
- E11000 duplicate key error index: test.collection.$a.b_1 dup key: { : null } 报错记录
- 【35】单层卷积网络(simple convolution)
- P1339 热浪【最短路】
- PAT (Basic Level) Practice (中文)1076 Wifi密码 (15 分)
- 关于华为高斯数据库 GaussDB 版本及认证体系介绍
- 0级搭建类008-Ubuntu Server Linux安装 (18.04.2) 公开
- JS中axios使用注意点
- XSS漏洞原理
- Treats for the Cows POJ - 3186 dp 区间dp
- 《深入理解java虚拟机》读书笔记九——第十章