POJ-2976-Dropping tests
2014-08-13 11:23
429 查看
这个题的话贪心+二分,设最后的结果k,那么(a1+a2+a3+.....)/(b1+b2+b3+....)=k,转换一下(a1-k*b1)+(a2-k*b2)+......=0,那么可以知道我们任取k个差值要尽量大才行,那么也就是说若后面我们的结果是大于0的,那么我们肯定可以找到更大的值满足要求。剩下的就简单了。
代码:
代码:
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int maxn=1100; const double eps=1e-6; int n,k,a[maxn],b[maxn]; double c[maxn]; int main() { while(scanf("%d%d",&n,&k)&&(n+k)) { for(int i=0;i<n;i++) scanf("%d",&a[i]); for(int i=0;i<n;i++) scanf("%d",&b[i]); double l=0.0,r=1.0; while(r-l>eps) { double mid=(l+r)/2; for(int i=0;i<n;i++) c[i]=a[i]-mid*b[i]; sort(c,c+n); double sum=0; for(int i=k;i<n;i++) sum+=c[i]; if(sum>=0) l=mid; else r=mid; } printf("%.0f\n",100*l); } return 0; }
相关文章推荐
- POJ 2976 Dropping tests——最大化平均值
- POJ 2976 Dropping tests & 分数规划讲解
- POJ-2976:Dropping tests【01分数规划】
- POJ-2976 Dropping tests
- POJ 2976 -- Dropping tests
- 【POJ】2976 - Dropping tests 二分->最大化平均值
- (2017.8.5周赛2) A - Dropping tests POJ - 2976(01数分规划)
- POJ 2976 Dropping tests
- poj 2976-Dropping tests解题报告
- POJ 2976:Dropping tests 01 分数规划
- POJ 2976 Dropping tests
- Poj 2976 Dropping tests
- F - Dropping tests POJ - 2976(二分)
- POJ 2976 Dropping tests
- 【POJ 2976】Dropping tests&01分数规划详解
- poj Dropping tests 01分数规划---Dinkelbach算法
- poj Dropping tests
- POJ Dropping tests
- poj Dropping tests 01分数规划---Dinkelbach算法
- poj Dropping tests 01分数规划---Dinkelbach算法