zoukankan      html  css  js  c++  java
  • nyoj-914-Yougth的最大化

    http://acm.nyist.net/JudgeOnline/problem.php?pid=914

    Yougth的最大化

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:4
    描述

    Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗?

    输入
    有多组测试数据
    每组测试数据第一行有两个数n和k,接下来一行有n个数Wi和Vi。
    (1<=k=n<=10000) (1<=Wi,Vi<=1000000)
    输出
    输出使得单位价值的最大值。(保留两位小数)
    样例输入
    3 2 
    2 2 
    5 3 
    2 1
    样例输出
    0.75

    解题思路:二分搜索,二分答案

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 
     5 struct P{
     6     double wi;
     7     double vi;
     8     double ave;
     9 }p[10010];
    10 
    11 int n, k, i;
    12 double left, mid, right, a[10010];
    13 
    14 int cmp(const void *a, const void *b){
    15     return *(double *)a > *(double *)b ? 1 : -1;
    16 }
    17 
    18 bool check(double x){
    19     for(i = 0; i < n; i++){
    20         a[i] = p[i].vi - x * p[i].wi;
    21     }
    22     qsort(a, n, sizeof(a[0]), cmp);
    23     double sum = 0.0;
    24     for(i = 0; i < k; i++){
    25         sum += a[n - 1 - i];
    26     }
    27     return sum >= 0 ? true : false;
    28 }
    29 
    30 void solve(){
    31     while((right - left) > 1e-9){
    32         mid = (right + left) / 2.0;
    33         if(check(mid)){
    34             left = mid;
    35         }
    36         else{
    37             right = mid;
    38         }
    39     }
    40     printf("%.2lf ", left);
    41 }
    42 int main(){
    43 
    44     while(scanf("%d %d", &n, &k) != EOF){
    45         left = right = 0.0;
    46         for(i = 0; i < n; i++){
    47             scanf("%lf %lf", &p[i].wi, &p[i].vi);
    48             p[i].ave = p[i].vi / p[i].wi;
    49             right = right > p[i].ave ? right : p[i].ave;
    50         }
    51         solve();
    52     }
    53     return 0;

    54 } 

  • 相关阅读:
    我说AOP(面向切面编程)--藏在苹果里的五角星
    mysql workbench 一个‘愚蠢’的设计
    .Net MVC Json 日期格式
    es6 import
    asp.net mvc 模型绑定太糙淡了
    asp.net mvc 报错 CS1617: Invalid option ‘6’ for /langversion; must be ISO-1, ISO-2, 3, 4, 5 or Default
    撸代码时到底用var好还是强类型变量好
    iphone5 从ios7升级到最新9.2
    修复win7 只有IE64 能上网 其他浏览器及应用都无法联网
    使用Teleri 导出实体类数组到Excel
  • 原文地址:https://www.cnblogs.com/angle-qqs/p/4121840.html
Copyright © 2011-2022 走看看