[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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux vim安装_centos mysql

    linux vim安装_centos mysqlLinuxcentos7系统下配置vim

    2022年9月30日
    2
  • unity3d简单游戏教程_3D推荐

    unity3d简单游戏教程_3D推荐经过前面《Unity3D入门教程》系列讲解,再加上我们自己的探索,相信大家已经掌握了Unity3D的相关知识和基本方法。本文将使用前面学到的知识,开发一款简单的五子棋程序。本文用到的东西其实不多,非常简单。在最后我们会把完整工程的源代码发布出来,以供初学者参考。

    2022年8月10日
    7
  • 浮动广告代码实例「建议收藏」

    浮动广告代码实例「建议收藏」很多网站的页面都有漂浮的广告效果,虽然烦人,但也确实起到了良好的宣传效果。各大代码网站也有关于漂浮代码的实例,很多存在着兼容性问题,不符合W3C标准,本站修复了兼容性问题,下面就简单介绍一下如何实现此效果。代码如下:[HTML]纯文本查看复制代码运行代码0102030405060708091011121314151617181920212223242526272829303

    2022年9月20日
    2
  • java定时器scheduled_spring定时任务注解

    java定时器scheduled_spring定时任务注解(本文仅供参考)使用spring@Scheduled注解执行定时任务:步骤:1.xmlns添加:http://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task/spring-task-3.1.xsdxmlns:task=”http://www.sprin…

    2025年12月3日
    4
  • 2021年G3锅炉水处理最新解析及G3锅炉水处理复审模拟考试「建议收藏」

    题库来源:安全生产模拟考试一点通公众号小程序安全生产模拟考试一点通:G3锅炉水处理最新解析考前必练!安全生产模拟考试一点通每个月更新G3锅炉水处理复审模拟考试题目及答案!多做几遍,其实通过G3锅炉水处理考试试题很简单。1、【多选题】玻璃器皿洗涤的标准是()。(AE)A、.均匀润湿B、.无污点C、.无油污D、.透明E、.无水珠2、【多选题】锅炉结生水垢的主要原因是()。(ABCDE)A、.溶解度降低B、.受热分解C、.相互反应D、.水的蒸发,…

    2022年4月15日
    42
  • yuv420格式(微信图片存储路径)

    网上大多数关于YUV420的资料都是关于YUV420P的,很少有YUV420SP的,因为YUV420SP的UV是交错存放的,处理起来相对麻烦点,但是YUV420SP也是一种常见格式,因此,在这里,我将关于YUV420SP格式数据的处理总结下,方便有需要的同志。一、YUV420格式数据介绍YUV,分为三个分量,“Y”表示明亮度,也就是灰度值;“U”和”V”表示的则是色度,作用是描述影

    2022年4月12日
    107

发表回复

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

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