正题

题目链接:https://www.luogu.com.cn/problem/AT3857


题目大意

给出nnn个数字的一个序列aaa,求它的所有非空子集的和的中位数。

1≤n,ai≤20001\leq n,a_i\leq 20001≤n,ai​≤2000


解题思路

考虑到假设所有数的和为SSS,一个集合的和为xxx,那么肯定有与其对应的另一个集合和为S−xS-xS−x。

所以如果算空集的话中位数一定是S2\frac{S}{2}2S​,但是因为不算所以需要往后移一个,那就是和大于且最接近S2\frac{S}{2}2S​的一个集合。

考虑怎么求这个和,暴力背包显然会TTT,但是因为我们只需要求能不能拼出这个数,所以直接用bitsetbitsetbitset就好了。

时间复杂度:O(n2aiω)O(\frac{n^2a_i}{\omega})O(ωn2ai​​)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<bitset>
using namespace std;
const int N=2010;
int n,sum,a[N];
bitset<N*N/2> f;
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);sum+=a[i];}int k=0;sum=(sum+1)/2;f[0]=1;for(int i=1;i<=n;i++)f=f|(f<<a[i]);while(!f[sum])sum++;printf("%d\n",sum);return 0;
}

AT3857-[AGC020C]Median Sum【背包,bitset】相关推荐

  1. 【Atcoder agc020 C】Median Sum,序列子集和中位数,bitset,01背包

    problem C - Median Sum / Time Limit: 2 sec / Memory Limit: 512 MB Score : 700 points Problem Stateme ...

  2. 2018.08.10 atcoder Median Sum(01背包)

    传送门 题意简述:输入一个数组anan. 对于所有2n−12n−1个非空子集,每个子集的权值是包含的所有元素之和. 求这2n−12n−1个非空子集权值的中位数. 对于每个权值vv都有一个对应的&quo ...

  3. CodeForces - 577B Modulo Sum(dp+bitset优化)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数列,现在问能否选出一个子序列,满足其累加之和可以整除 m 题目分析:可以当做背包去思考,dpi,jdp_{i,j}dpi,j​代表的是选了前 i ...

  4. Gym 100917J---Judgement(01背包+bitset)

    题目链接 http://codeforces.com/gym/100917/problem/J Description standard input/output Statements The jur ...

  5. 【Loj - 515】贪心只能过样例(暴力,或01背包 + bitset)

    题干: 题目描述 输入格式 第一行一个数 n. 然后 n 行,每行两个数表示 ai​,bi​. 输出格式 输出一行一个数表示答案. 样例 样例输入 5 1 2 2 3 3 4 4 5 5 6 样例输出 ...

  6. atcoder题目合集(持续更新中)

    Choosing Points 数学 Integers on a Tree 构造 Leftmost Ball 计数dp+组合数学 Painting Graphs with AtCoDeer tarja ...

  7. 01背包输出路径、完全背包、多重背包

    背包问题 一.01 Knapsack(输出路径- >选的物品) 二.完全背包 1.三重循环,极可能TLE,滚动数组优化后j逆向枚举 2.二重,优化消去变量k(没有特别厘清,但可以直接从完全背包角 ...

  8. bzoj 3687: 简单题

    2333,昨天模拟赛第一题死都想不出怎么优化tarjan,然而正解是一个kora***什么什么的东西,就是正反两遍dfs,然后这个算法求强联通分量的话,是可以用bitset来优化一下的(只考虑点). ...

  9. vijos1153 猫狗大战

    描述 新一年度的猫狗大战通过SC(星际争霸)这款经典的游戏来较量,野猫和飞狗这对冤家为此已经准备好久了,为了使战争更有难度和戏剧性,双方约定只能选择Terran(人族)并且只能造机枪兵. 比赛开始了, ...

最新文章

  1. 《Python数据分析与挖掘实战》一第1章 数据挖掘基础1.1 某知名连锁餐饮企业的困惑...
  2. 通过Scroller.js制作上拉加载和下拉刷新
  3. 将h.264视频流封装成flv格式文件(一.flv格式)
  4. 为什么mysql第一步安装_Mysql安装步骤
  5. 前端学习(2367):两种方式导航跳转和传参
  6. 【操作系统】实验 模拟操作系统的存储系统
  7. 太肝了、最近5年183个Java面试问题列表及回答(值得收藏)
  8. sql自动审核工具-inception
  9. php用curl调用接口方法,get和post两种方式
  10. python调用m文件
  11. vue优化技巧之Object.freeze()
  12. 如何用python裁剪图片
  13. 将ipa文件安装到手机的最简单方法和将ipa发布到appstore的方法
  14. 爬虫基本库的使用之正则表达式
  15. 八皇后问题(回溯算法)
  16. wince 触摸屏 学习
  17. 寻找三体文明:五环外4.2光年发现液态水,或许另一个宜居星球
  18. webgl_gpgpu_birds 样例分析
  19. 笔记本计算机的功率一般多少钱,笔记本电脑功率是多少?笔记本功率简单的查看方法...
  20. Odoo产品分析 (三) -- 人力资源板块(2) -- 工时表(1)

热门文章

  1. qt4.7 mysql_详解Qt 4.7编译和访问Mysql驱动
  2. path manipulation怎么解决_干货!终于!解决macOS下pyenv安装python3.8.2缺少tkinter模块的问题!...
  3. 浮点数赋值给整数_初学者专题:变量和赋值
  4. mysql select 反选_JQuery实现全选、全不选和反选功能
  5. python中数据用折线图表示_用python处理文本数据
  6. MySQL调用mongodb事务回滚_SpringBoot整合MongoDB,在多数据源下实现事务回滚。
  7. java基础变量_Java基础语法之变量和常量
  8. java鼠标改变窗口大小监听事件_java – 当用户拖动鼠标时,监听JFrame调整事件大小?...
  9. 乐视android版本点四下,EUI5.9+Android7.0刷机包
  10. c++十进制转二进制_二进制与十进制如何互相转换?