博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jzoj5542 董先生的钦点
阅读量:5053 次
发布时间:2019-06-12

本文共 712 字,大约阅读时间需要 2 分钟。

这道题在我做的前一天被wjw大佬压中了,当时随便脑洞了一个做法

于是在比赛还剩3分钟的时候我把它写了一下就切了

考虑一个集合S,f(S)=ΣSi 显然我们将所有的f排序之后有一个性质rank[f(S)]+rank[f(~S)]=2^N

那么显然,中位数就是将全集划分为两个尽可能平均的集合的较大一部分

我们考虑dp,f[i]=max(f[i-v[j]]+v[j]) ,答案即为f[S/2]

这样显然会超时,我们要用bitset来优化,方程为f[i]=f[i]|f[i<<v[j]],复杂度O(n^3/128)

 

#pragma GCC optimize("O3")#pragma G++ optimize("O3")#include
#include
#include
#include
using namespace std;int n,v[2010],S,T;bitset<2000*1000> f;int main(){ freopen("will.in","r",stdin); freopen("will.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",v+i),S+=v[i]; T=S; S>>=1; f[0]=1; for(int i=1;i<=n;++i) f|=f<

转载于:https://www.cnblogs.com/Extended-Ash/p/9477139.html

你可能感兴趣的文章
2019-1-9笔记
查看>>
程序员求职之道(《程序员面试笔试宝典》)之面试官箴言?
查看>>
加速网站访问的一些实践体会
查看>>
中国象棋程序的设计与实现(一)--项目截图
查看>>
十一月书稿
查看>>
两只小熊队高级软件工程第九次作业敏捷冲刺4
查看>>
推荐一个好用的虚拟主机
查看>>
ulimit
查看>>
php代码执行顺序
查看>>
php 写入数据到MySQL以及从MySQL获取数据,页面出现乱码的解决方法
查看>>
MYSQL视图的学习笔记
查看>>
爬虫基础
查看>>
laravel常用artisan命令
查看>>
130292015038 张雅周 第一章作业
查看>>
获取文件字段并生产一个新的页面
查看>>
IIS 添加 MIME
查看>>
[转]协同管理系统
查看>>
安装了OFFICE2007,每次打开word时都显示配置microsoft office professional plus 解决方法...
查看>>
联合体和结构体的区别
查看>>
相同文件名引发的教训
查看>>