题目链接:

https://cn.vjudge.net/problem/POJ-3111

题目大意:

卖宝救夫:Demy要卖珠宝,n件分别价值vi 重 wi,她希望保留k件使得

最大。

解题思路:

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int INF = 1e7;
const int maxn = ;
int n, m;
double w[maxn], v[maxn], y[maxn];
bool judge(double x)
{
for(int i = ; i <= n; i++)
y[i] = v[i] - x * w[i];
sort(y + , y + n + ); double sum = ;
for(int i = , j = n; i <= m; i++, j--)
sum += y[j];
return sum >= ;
}
struct node
{
double x;
int id;
bool operator <(const node& a)const
{
return x > a.x;
}
}ans[maxn];
int main()
{
cin >> n >> m;
for(int i = ; i <= n; i++)
cin >> v[i] >> w[i];
double l = , r = INF;
for(int i = ; i < ; i++)
{
double mid = (l + r) / ;
if(judge(mid))l = mid;
else r = mid;
}
for(int i = ; i <= n; i++)
{
ans[i].id = i;
ans[i].x = v[i] - l * w[i];
}
sort(ans + , ans + n + );
printf("%d", ans[].id);
for(int i = ; i <= m; i++)
{
printf(" %d", ans[i].id);
}
puts("");
return ;
}

POJ-3111 K Best---二分求最大化平均值的更多相关文章

  1. poj 3111 K Best (二分搜索之最大化平均值之01分数规划)

    Description Demy has n jewels. Each of her jewels has some value vi and weight wi. Since her husband ...

  2. POJ 3111 K Best ( 二分 )

    题意 : 给出 N 个物品的价值和重量,然后要求选出 K 个物品使得选出来物品的单位重量价值最大,最后输出被选物品的编号. 分析 :  很容易去想先算出每个物品的单位价值然后升序排序取前 K 个,但是 ...

  3. poj 3111 K Best 最大化平均值 二分思想

    poj 3111 K Best 最大化平均值 二分思想 题目链接: http://poj.org/problem?id=3111 思路: 挑战程序竞赛书上讲的很好,下面的解释也基本来源于此书 设定条件 ...

  4. POJ 3111 K Best 最大化平均值 [二分]

    1.题意:给一共N个物品,每个物品有重量W,价值V,要你选出K个出来,使得他们的平均单位重量的价值最高 2.分析:题意为最大化平均值问题,由于每个物品的重量不同所以无法直接按单位价值贪心,但是目标值有 ...

  5. POJ 3111 K Best(最大化平均值)

    题目链接:click here~~ [题目大意]有n个物品的重量和价值各自是Wi和Vi.从中选出K个物品使得单位重量的价值最大,输出物品的编号 [解题思路]:最大化平均值的经典.參见click her ...

  6. POJ 3111 K Best(二分答案)

    [题目链接] http://poj.org/problem?id=3111 [题目大意] 选取k个物品,最大化sum(ai)/sum(bi) [题解] 如果答案是x,那么有sigma(a)>=s ...

  7. POJ 3111 K Best(01分数规划)

    K Best Time Limit: 8000MS   Memory Limit: 65536K Total Submissions: 9876   Accepted: 2535 Case Time ...

  8. 【二分查找-最大化平均值】POJ2976 - Dropping Test

    [题目大意] 给出n组ai和bi,去掉k个使得a的总和除以b的总和最大. [思路] 也就是取(n-k)个数,最大化平均值,见<挑战程序设计竞赛>P144,最后公式为c(x)=((ai-x* ...

  9. codeforce 1070 E Getting Deals Done(二分求最大化最小值)

    Polycarp has a lot of work to do. Recently he has learned a new time management rule: "if a tas ...

随机推荐

  1. linux dns高速缓存

    1.安装部署dns yum install bind -y systemctl start  named systemctl  enable  named systemctl  stop  firew ...

  2. 关于 java中的SecureRandom在linux中每次生成不同结果

    使用AES算法的时候,会发现下面的代码在windows每次产生确定的结果,但Linux就不同,导致无法正确解密 public static String encrypt(String content, ...

  3. R语言安装程序包

    自动安装(在线安装) 在R的控制台,输入 install.packages("gridExtra") # 安装 gridExtra install.packages("s ...

  4. java——平衡二叉树 AVLTree、AVLMap、AVLSet

    平衡二叉树:对于任意一个节点,左子树和右子树的高度差不能超过1 package Date_pacage; import java.util.ArrayList; public class AVLTre ...

  5. 使用PIE对IE6、7、8进行CSS3兼容介绍和经验总结

    下面说说如何对 IE10 以下版本的浏览器进行部分 CSS3 兼容 国外团队开发的兼容插件,去年做项目时才发现,非常强大 主角:PIE.js ,  PIE.htc    两种方法可以实现 官方网站:h ...

  6. 8597 石子划分问题 dpdp,只考虑第一次即可

    8597 石子划分问题 时间限制:500MS  内存限制:1000K提交次数:155 通过次数:53 题型: 编程题   语言: G++;GCC;VC Description 给定n个石子,其重量分别 ...

  7. UnityError SocketException: 以一种访问权限不允许的方式做了一个访问套接字的尝试。

    SocketException: 以一种访问权限不允许的方式做了一个访问套接字的尝试. 以管理员身份运行Unity就可以了,权限不够的问题.

  8. 性能测试工具LoadRunner17-LR之Controller windows系统资源性能常用计数器

    1.System %Total Processor Time 该计数值用于体现服务器整体的处理器利用率,对多处理器而言,该计数值体现的是所有CPU的平均利用率.如果该值的数值持续超过90%,则可以说明 ...

  9. jQuery源代码学习笔记_bind

    一般想到JS的兼容性问题的时候,首先会想到addEventListener与attachEvent这一对冤家,那么我们先来看看它们有什么兼容性问题 addEventListener与attachEve ...

  10. (七)使用jedis连接单机和集群(一步一个坑踩出来的辛酸泪)

    环境准备: redis-4.0.9,最新版了 ruby:redis-x.x.x.gem    这个gem什么版本都行,我redis4用3.0.0的gem正常跑 jedis-2.9.0.jar,最新版 ...