https://www.luogu.com.cn/problem/P1441


[ 1 , n ] [1,n] [1,n]共n个砝码,可以将这n个砝码取不取变成一个状态i,我们枚举这个状态i,只有当状态i中的二进制1的个数为n - m时,才进行相应的求最大值操作。

求最大值:
建一个bitset,,第i位代表数字i能否被取到,因为砝码只能放在一边,所以砝码之间的重量全部是加法操作,默认第0位为1代表重量0能够被取到

公式 b = b ∣ b < < a [ j ] b = b | b << a[j] b=b∣b<<a[j]是按位进行合并的意思,b中存储了所有可以得到的重量,如果再有一个砝码 a [ j ] a[j] a[j]可以使用,那么左移 a [ j ] a[j] a[j]位得到新的可以得到的重量,然后与旧的可以得到的重量进行或操作,就可以更新总的可以得到的砝码重量

#include<bits/stdc++.h>
using namespace std;
const int N = 25;int n, m;
int a[N];int main()
{cin >> n >> m;for(int i = 0; i < n; i++)cin >> a[i];int res = 0;for(int i = 1;  i < 1 << n; i++){if(__builtin_popcount(i) == n - m){bitset<2010> b;b[0] = 1;for(int j = 0; j < n; j++)if(i & (1 << j))b = b | (b << a[j]);res = max(res, int(b.count()));}}cout << res - 1 << "\n";return 0;
}

【状压DP】砝码称重相关推荐

  1. Bailian4141 砝码称重【DP】

    4141:砝码称重 总时间限制: 1000ms 内存限制: 65536kB 描述 设有1g.2g.3g.5g.10g.20g的砝码各若干枚(其总重<=1000),要求:计算用这些砝码能称出的不同 ...

  2. 【DP】砝码称重 (ssl 1072)

    砝码称重 ssl 1072 题目大意: 有6种砝码,每种的个数分别为a1,a2,a3,a4,a5,a6,请问可以平出多少种重量(0除外) Description 设有1g.2g.3g.5g.10g.2 ...

  3. HDU 4539郑厂长系列故事――排兵布阵(状压DP)

    HDU 4539  郑厂长系列故事――排兵布阵 基础的状压DP,首先记录先每一行可取的所哟状态(一行里互不冲突的大概160个状态), 直接套了一个4重循环居然没超时我就呵呵了 1 //#pragma ...

  4. BZOJ 2073: [POI2004]PRZ( 状压dp )

    早上这道题没调完就去玩NOI网络同步赛了.... 状压dp , dp( s ) 表示 s 状态下所用的最短时间 , 转移就直接暴力枚举子集 . 可以先预处理出每个状态下的重量和时间的信息 . 复杂度是 ...

  5. 最短Hamilton路径(状压dp)

    链接:https://ac.nowcoder.com/acm/problem/50909 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  6. [ NOIP提高组 2016]愤怒的小鸟(暴搜 + 状压DP)// [SNOI2017]一个简单的询问(莫队)

    一次性写两道题 T1:一个简单的询问 题目 题解 代码实现 T2:愤怒的小鸟 题目 暴搜题解 暴搜代码实现 状压DP题解 状压DP代码实现 T1:一个简单的询问 题目 给你一个长度为 N 的序列 ai ...

  7. 【BZOJ2073】[POI2004]PRZ 状压DP

    [BZOJ2073][POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍 ...

  8. 【OJ8756】砝码称重V2,可达性多重背包

    砝码称重V2 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 设有1g.2g.3g.5g.10g.20g的砝码各若干枚(其总重<=100,000),要求:计 ...

  9. 最短Hamilton路径(哈密顿图,状压dp)

    题目: 给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径. Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次. ...

  10. CF1463F Max Correct Set(取小样法+状压 DP)

    CF1463F Max Correct Set 要求选出集合 \(U=\{1,2,3,\dots,n\}\) 的一个子集 \(S\),满足:如果 \(a \in S\) 并且 \(b \in S\), ...

最新文章

  1. checkbox管理
  2. Linux 删除文件夹和文件的命令(强制删除包括非空文件)
  3. 1.7 对新序列采样-深度学习第五课《序列模型》-Stanford吴恩达教授
  4. JTStackController
  5. java paint 怎么用_java如何使用paint方法画图
  6. laravel 记录sql语句
  7. Python 操作 pymysql 批量 增、删、改、查
  8. ecshop活动页_ECSHOP团购活动,ECSHOP团购列表
  9. Python面向对象编程扑克牌发牌程序,另含大量Python代码!
  10. 原版英文书籍《Linux命令行》阅读记录4 | 操作文件和目录
  11. python 柱状图设置样式_python数据可视化之图表样式调整(三)
  12. 推荐Android中两个很好用的banner,可无限轮播,可使用第三方图片加载框架加载网络图...
  13. ✨✨✨【C语言】带你用最短的时间刷题(附解题思路、具体代码)不断更新(三)✨✨✨
  14. 语句SELECT TOP 100 PERCENT在不同数据库中的区别
  15. Vue简易图片手风琴组件,包含宽度适应(JS操作CSS实现)
  16. Excel中如何实现批量中文转拼音
  17. 创意小发明:使用51系列单片机的DIY点焊机控制项目(程序+原理图)
  18. Apache Solr任意文件读取漏洞复现
  19. 点点滴滴自学PS(一)批量去水印
  20. 07 接头暗语:如何利用 Netty 实现自定义协议通信?

热门文章

  1. 兔圆圆2023跨年倒计时+史上最炫烟花秀,太美了吧
  2. 绘图杂记【2】使用Python/R语言对柱形图、饼图进行纹理填充
  3. 使用docker安装nginx
  4. Android中SoundPool播放音频示例
  5. VMware虚拟机与本地主机进行磁盘共享(详解)
  6. 获得京东商品分类 API
  7. STM32的CAN总线调试经验分享
  8. [耳放耳机] [设计实做]9015、9013全分立单端甲类电池供电小耳机放大器
  9. C语言常见运算符(基础)
  10. 货币贬值与剪羊毛 读《货币战争》有感