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

P1582 倒水(贪心 + lowbbit)的更多相关文章

  1. 洛谷 P1582 倒水 解题报告

    P1582 倒水 题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水量相同的瓶子,把 ...

  2. P1582 倒水 (数学)

    P1582 倒水 题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水量相同的瓶子,把 ...

  3. 洛谷P1582 倒水

    P1582 倒水 题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水量相同的瓶子,把 ...

  4. 洛谷P1582 倒水 二进制 lowbit __builtin_popcount

    P1582 倒水:https://www.luogu.org/problemnew/show/P1582 题意: 给定n瓶装有1升的水瓶,每次可以把两瓶装水量相同的水和成一瓶,问最少还要增加几瓶装有1 ...

  5. 洛谷 - P1582 - 倒水 - 位运算

    https://www.luogu.org/problemnew/show/P1582 要求用最少的瓶子,那肯定不能有两个一样的瓶子,否则合并更优. 枚举其二进制位,每次加上lowbit,将最后一个1 ...

  6. P1582 倒水 题解

    来水一发水题.. 题目链接. 正解开始: 首先,我们根据题意,可以得知这是一个有关二进制的题目: 具体什么关系,怎么做,我们来具体分析: 对于每个n,我们尝试将其二进制分解,也就是100101之类的形 ...

  7. P1582倒水

    推了一个多小时的式子,ac后一看题解,7行代码搞定 emmmm我还是太菜了 传送 蒟蒻解法: 不管怎么倒水,最终所有瓶子里面的水的数量一定可以用2k表示出来. n最终可以合并成几个瓶子呢? 我们可以把 ...

  8. 洛谷P1582 倒水 二进制的相关应用

    https://www.luogu.org/problem/P1582 #include<bits/stdc++.h> using namespace std; long long N,K ...

  9. P1582 倒水

    传送门 思路: 类似于 袁绍的刁难 , 一道二进制的模拟题. 先将:将原先的瓶子数 n 转换成二进制,二进制中 1 的个数就是合并后剩下的瓶子个数 . 主要利用树状数组的 lowbit 函数: inl ...

随机推荐

  1. R 拼接结果展示

    学长教的拼接结果展示 哇,R 简直太有魅力了! 晚一点补充

  2. F. Moving Points

    https://codeforces.com/contest/1311/problem/F 这是一道线段树类型的题: 可以用权值线段树或者树状数组来解: 所以,我们可以分为两部分,第一部分是计算出到当 ...

  3. First Kernel-pwn

    Kernel pwn-极简题目的操作模式 完全参照M4x师傅的指导,用 hacklu的baby kernel迈了第一步 题目附带文件说明 一般题目会给出bzImage,.cpio, .sh文件 sh文 ...

  4. css实现聊天气泡效果

      --------------------------------------- css功能强大,能实现很多炫 酷的效果,今天给大家分享 用css3绘制聊天气泡的方法: -------------- ...

  5. 题解【AcWing487】金明的预算方案

    题面 有依赖的背包问题模板题. 我们观察到 每个主件可以有 0 个.1 个或 2 个附件 , 于是考虑对于每一个主件,我们用枚举子集的方式枚举使用哪一些附件, 然后就是一个经典的分组背包问题了. 注意 ...

  6. c#后端 小程序上传图片

    c#后端: /// <summary> /// 上传图片 /// </summary> /// <returns></returns> [HttpPos ...

  7. 转载:openmax bellagio

    https://wenku.baidu.com/view/18472c1387c24028915fc3e9.html https://wenku.baidu.com/view/1e380bc20c22 ...

  8. 三行代码实现垂直居中和cube

    三行代码实现上下居中 position: relative;top: 50%;transform: translateY(-50%); 效果如下:   代码: <!DOCTYPE html> ...

  9. Selenium3+python自动化009- js之屏幕滑动和日历操作

    一.js的滑屏 1)以下脚本实现js滑屏scroll="document.documentElement.scrollTop=800"#垂直滚动 pxscroll = " ...

  10. pandas包学习笔记

    目录 zip Importing & exporting data Plotting with pandas Visual exploratory data analysis 折线图 散点图 ...