K Best POJ - 3111 (二分最大化平均值,注意用G++提交,不然TLE)
2017-04-23 01:14
183 查看
题意简单易懂。然后就是提交要用G++比较坑。然后有点定势思维的是以为v比w小。。所以一开始r初始化为了1…还有答案就在我们的a数组中
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; #define INF 0x3f3f3f3f const int maxn=100005;//0 struct node { int xb; double v,w; double k; }; int n,k; node a[maxn]; bool cmp(node a1,node b1) { return a1.k>b1.k; } int ok(double mid) { for(int i=0;i<n;i++) a[i].k=a[i].v-a[i].w*mid; sort(a,a+n,cmp); double sum=0; for(int i=0;i<k;i++){ sum+=a[i].k; } if(sum>=0) return 1; return 0; } int main() { scanf("%d %d",&n,&k); for(int i=0;i<n;i++){ scanf("%lf %lf",&a[i].v,&a[i].w); a[i].xb=i+1; } double l=0,r=1.00*INF; for(int i=0;i<100;i++) { double mid=l+(r-l)/2.0; if(ok(mid)) l=mid; else r=mid; } for(int i=0;i<k-1;i++)//输出 printf("%d ",a[i].xb); printf("%d\n",a[k-1].xb); return 0; }
相关文章推荐
- K Best POJ - 3111 (二分最大化平均值,注意用G++提交,不然TLE)
- K Best POJ - 3111 (二分最大化平均值,注意用G++提交,不然TLE)
- K Best POJ - 3111 (二分最大化平均值,注意用G++提交,不然TLE)
- K Best POJ - 3111 (二分最大化平均值,注意用G++提交,不然TLE)
- K Best POJ - 3111 (二分最大化平均值,注意用G++提交,不然TLE)
- K Best POJ - 3111 (二分最大化平均值,注意用G++提交,不然TLE)
- K Best POJ - 3111 (二分最大化平均值,注意用G++提交,不然TLE)
- POJ 3111 K Best + poj 2976 Dropping tests (二分, 最大化平均值)
- poj 3111 K Best(二分-最大化平均值)
- POJ 3111 K Best(二分——最大化平均值)
- POJ 3111 K Best 二分 最大化平均值
- POJ_3111_K_Best_(二分,最大化平均值)
- poj 3111 K Best (二分搜索之最大化平均值之01分数规划)
- POJ 3111 K Best &&NYOJ 914 (二分+ 贪心,最大化平均值)
- POJ - 3111 K Best && POJ - 2976 Dropping tests 最大化平均值(二分||牛顿迭代)
- 【POJ】3111 - K Best 二分->最大化平均值
- POJ 3111 K Best(最大化平均值)
- POJ 3111 K Best 最大化平均值
- POJ---3111(二分,最大化平均值)
- POJ 3111 - K Best(最大化平均值)