2017年第0届浙江工业大学之江学院程序设计竞赛决赛 E: qwb和李主席 [折半枚举二分]【思维?套路!】
来源:互联网 发布:哪里购买域名续费便 编辑:程序博客网 时间:2024/06/05 08:59
题目链接:http://115.231.222.240:8081/JudgeOnline/problem.php?cid=1005&pid=4
——————————————————————————————————————————
Problem E: qwb和李主席
Time Limit: 4 Sec Memory Limit: 128 MB
Submit: 391 Solved: 39
[Submit][Status][Web Board]
Description
qwb和李主席打算平分一堆宝藏,他们想确保分配公平,可惜他们都太懒了,你能帮助他们嘛?
Input
输入包含多组测试数据,处理到文件结束。
每组测试数据的第一行是一个正整数N(0 <= N <=36 )表示物品的总个数.。
接下来输入N个浮点数(最多精确到分),表示每个物品的价值V(0< V<=1e9)。
Output
对于每组测试数据,输出能够使qwb和李主席各自所得到的物品的总价值之差的最小值(精确到分),每组测试数据输出占一行。
Sample Input
3 0.01 0.1 1
2 1 1
Sample Output
0.89
0.00
——————————————————————————————————————————
n=36,如果直接枚举的话超时
然后先到分成两部分进行枚举,先枚举出一部分的所有可能结果,然后枚举另一部分在这个部分二分找最优就好
找的时候要找加和最靠近total/2的,然后维护最小值就好了
讲道理说如果*100用整形处理比较美滋滋,但是wa到死,改成double直接ac。。。。
附本题代码
——————————————————————————————————————————
#include <bits/stdc++.h>typedef long long int LL;using namespace std;#define abs(x) (((x)>0)?(x):-(x))const int N = 1000000+10;const int MOD = 1e9+7;const double INF = 1e18;/******************************************/double x[111];double a[111],b[111],c[(1<<20)+1];double tot,tmp,ans;int la,lb,lc;int n;double BS(){ int l=1,r=lc,mid,res=-1; while(l<=r){ mid = r+l >> 1; if(c[mid]+tmp>=tot/2.0) res=mid,r=mid-1; else l=mid+1; } if(res==-1) res=r; return min(abs(tot-c[res]*2-tmp*2),abs(tot-c[res-1]*2-tmp*2));}int main(){ c[0]=INF; while(~scanf("%d",&n)){ la=lb=lc=tot=0.0,ans=INF; for(int i=1;i<=n;i++) scanf("%lf",&x[i]); for(int i=1;i<=n;i++){ tot+=x[i]; if(i*2<=n) a[la++]=x[i]; else b[lb++]=x[i]; } for(int i=0,j;i<(1<<la);i++) for(c[++lc]=0.0,j=0;j<la;j++) if(i&(1<<j)) c[lc]+=a[j]; sort(c+1,c+lc+1); for(int i=0,j;i<(1<<lb);i++){ for(tmp=0.0,j=0;j<lb;j++) if(i&(1<<j)) tmp+=b[j]; ans=min(ans,BS()); } if(ans==0.0) ans=0.0; printf("%.2f\n",ans);// printf("%lld.%02lld\n",ans/100,ans%100); } return 0;}
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 E: qwb和李主席 [折半枚举二分]【思维?套路!】
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 Problem E: qwb和李主席(折半搜索+类二分枚举)
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 Problem E: qwb和李主席 (折半枚举!!!!n堆数分成最接近的两堆!!
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 G: qwb去面试 [找规律]【思维】
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 K: qwb与小数 [快速幂]【思维】
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 L: qwb与整数对 [离线]【思维】
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 B: qwb与矩阵
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 G.qwb去面试【贪心】
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 D.qwb与神奇的序列【递推】
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—B qwb与矩阵
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—D qwb与神奇的序列
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—J qwb又偷懒了
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—K qwb与小数
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 A: qwb与支教 [容斥]【数学】
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 D: qwb与神奇的序列 [矩阵]【数学】
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 H: qwb与学姐 [MST+LCA]【数据结构】
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 J: qwb又偷懒了 [BIT]【数据结构】
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—A qwb与支教
- sqlserver2008 R2数据库-不允许表修改保存,阻止保存要求重新创建表的更改
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 D: qwb与神奇的序列 [矩阵]【数学】
- 185.m1-DrawerLayout的应用
- ps 学习总结-卸载不了
- [FFT] [矩阵快速幂] [HDU4914] Linear recursive sequence
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 E: qwb和李主席 [折半枚举二分]【思维?套路!】
- Java冒泡排序法和选择排序法
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 F: qwb has a lot of Coins [nim]【博弈】
- rpy2 使用中注意的问题
- Java研发学习之路小回顾
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 G: qwb去面试 [找规律]【思维】
- 蓝桥-ALGO-20-求先序排列
- 利用Python抓取网络图片
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 H: qwb与学姐 [MST+LCA]【数据结构】