[POJ 2976]Dropping tests(0-1分数规划)

[POJ 2976]Dropping tests(0-1分数规划)

大家好,又见面了,我是全栈君。

  1. 题目地址:http://poj.org/problem?

    id=2976

  2. 题目大意:给你n个物品的a值和b值,要你从中丢掉k个(或者说选择n-k个)物品,使得剩下的物品的[POJ 2976]Dropping tests(0-1分数规划)最大
  3. 题目思路(以下思路转自http://blog.csdn.net/neofung/article/details/7649603):

    我们能够看看例如以下推导

    [POJ 2976]Dropping tests(0-1分数规划)

    题目就变成了二分检索r

  4. 代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <algorithm>
    #include <cmath>
    
    #define MAXN 1010
    #define EPS (1e-6)
    #define INF 0x3f3f3f3f
    
    using namespace std;
    
    double w[MAXN],v[MAXN];
    int n,k;
    double value[MAXN];
    
    bool check(double x) //推断平均值x是否可取
    {
    	double sum=0;
    	for(int i=1;i<=n;i++)
    		value[i]=v[i]-x*w[i];
    	sort(value+1,value+n+1); //贪心排序,从大到小选取k个value[i],且这k个value的和必须不小于0
    	for(int i=n;i>=n-k+1;i--)
    		sum+=value[i];
    	return sum>=0;
    }
    
    int main()
    {
    	while(scanf("%d%d",&n,&k)!=EOF&&!(n==0&&k==0))
    	{
    	    k=n-k;
    		for(int i=1;i<=n;i++)
    			scanf("%lf",&v[i]);
    		for(int i=1;i<=n;i++)
    			scanf("%lf",&w[i]);
    		double lowerBound=0,upperBound=INF; //二分这个平均值
    		while(fabs(upperBound-lowerBound)>EPS)
    		{
    			double mid=(lowerBound+upperBound)/2;
    			if(check(mid)) lowerBound=mid;
    			else upperBound=mid;
    		}
    		printf("%.f\n",100*upperBound);
    	}
    	return 0;
    }
    


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115619.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 51单片机的毕业设计题目_51单片机新颖毕业设计题目

    51单片机的毕业设计题目_51单片机新颖毕业设计题目以下是学长亲手整理的C51单片机相关的毕业设计选题,都是经过学长精心审核的题目,适合作为毕设,难度不高,工作量达标,对毕设有任何疑问都可以问学长哦!相对容易工作量达标题目新颖,含创新点httpshttpshttpshttpshttpshttps。…

    2022年10月3日
    1
  • 电力电缆2021年考试题库

    电力电缆2021年考试题库1.不允许带电移动10kV电缆。()×2.直埋电缆的敷设方式适合于电缆根数多的区域。()×3.中性点不接地电力系统发生单相接地时,健全相对地电压升高。()√4.中性点直接接地电力系统发生单相接地时,线电压不变。()×5.电缆敷设过程中应控制侧压力,高压和超高压电缆允许的侧压力一般为()。CA.1kN/mB.2kN/mC.3kN/m6.在交流电压下,随电压作用时间增加,绝缘层击穿场强()。BA.不变B.下降C.上升7.组织电缆线路工程预验收的单位是运行单位。(.

    2022年5月7日
    55
  • 时间倒计时代码

    简单易用的倒计时js代码-站长素材*{margin:0;padding:0;list-style:none;}body{font-size:18px;text-align:center;}.time{height:30px;padding:200px;}          00天       00时       00分   

    2022年4月8日
    72
  • [转载]下载网页中的ts视频文件

    [转载]下载网页中的ts视频文件目前来说,网上视频下载主要分为两大类,一类是大型正规网站,另一类就是第三方视频,基本上都是个人网站或者个人上传到网上的视频。第一类视频下载非常好办,只要下载安装官方客户端即可。第二类目前稍微复杂,目前主要的下载手段有通过浏览器视频嗅探插件、视频解析下载工具还有IDM嗅探下载。大家都知道,现在的视频网站播放技术主要以m3u8为主,这样的好处是用户点击暂停时即停止视频缓存,不造成宽带流浪占用浪费,同时也减轻了服务器的访问请求压力。这样做的坏处也很明显,嗅探软件不能嗅探完整的视频文件,嗅探到的也都是每

    2022年7月18日
    44
  • SpringBoot非官方教程 | 第十篇: 用Spring Restdocs创建API文档「建议收藏」

    SpringBoot非官方教程 | 第十篇: 用Spring Restdocs创建API文档

    2022年3月6日
    36
  • 批量修改某一文件夹所有文件名

    批量修改某一文件夹所有文件名

    2021年11月17日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号