博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ - 3111 K Best(二分)
阅读量:4958 次
发布时间:2019-06-12

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

包含一些ai和bi的集用S来表示,x = max(sigma(ai)/sigma(bi),i 属于S) ,k 表示S的大小,k= |S|。

x和k之间具有单调性。k0 < k1 → x0 ≥ x1。单调性对x(k)的反函数k(x)也成立。现在的问题是k已经给出,

那么猜测一个x,通过和sigma(ai)/sigma(bi) 作差得到大小关系以便收敛区间。

要求x可以做一点变形sigma(ai)/sigma(bi) - k*x → sigma(ai - x*b),x是max值,和一个常数作差以后也是最大的,

因此选取前k大元素ai - x*b求和就可以得到差值。

(还有一种很迷的迭代法也可以收敛

/**********************************************************            ------------------                          **   author AbyssalFish                                   ***********************************************************/#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int maxn = 1e5;int n, k;struct Query{ int v,w; double key;}q[maxn];int r[maxn];struct cmp{ bool operator()(int a,int b){ return q[a].key > q[b].key; }};double cal(double x){ for(int i = 0; i < n; i++){ q[r[i]].key = q[r[i]].v-x*q[r[i]].w; } nth_element(r,r+k,r+n,cmp()); double re = 0; for(int i = 0; i < k; i++){ re += q[r[i]].key; } return re;}const double eps = 1e-11;//#define LOCALint main(){#ifdef LOCAL freopen("in.txt","r",stdin);#endif while(~scanf("%d%d",&n,&k)){ double lb = 0, ub = 0, md, re; for(int i = 0; i < n; i++){ scanf("%d%d",&q[i].v,&q[i].w); r[i] = i; ub = max(ub,(double)q[i].v/q[i].w); } for(int i = 100; i--;){ md = (lb+ub)/2; re = cal(md); if(re > eps) lb = md; else if(re < -eps) ub = md; else break; } k--; for(int i = 0; i < k; i++){ printf("%d ",r[i]+1); } printf("%d\n",r[k]+1); } return 0;}

 

转载于:https://www.cnblogs.com/jerryRey/p/4969716.html

你可能感兴趣的文章
硬盘下出现字母加数字命名的文件夹--处理方法
查看>>
URL处理----拼接和编码
查看>>
apache 和 tomcat关系(转)
查看>>
JavaScript中使Promise模式进行异步编程
查看>>
保护视力,用耳朵听文章、帖子、电子书
查看>>
C++ const总结
查看>>
httpclient
查看>>
Centos安装Docker
查看>>
Java反射机制
查看>>
ACM中的正则表达式
查看>>
delphi中locate查找方法
查看>>
jquery Deferred
查看>>
详解C# Tuple VS ValueTuple(元组类 VS 值元组)
查看>>
eval解析JSON中的注意点
查看>>
php 创建包含变量名和它们的值的数组函数
查看>>
Template、ItemsPanel、ItemContainerStyle、ItemTemplate
查看>>
微信小程序----map组件实现解析经纬度
查看>>
bzoj 1208: [HNOI2004]宠物收养所 set
查看>>
WCF学习目录
查看>>
Redis:一、简介
查看>>