zoukankan      html  css  js  c++  java
  • POJ2976 Dropping tests 01分数规划

    二分答案ans,可让精度恶心死我了

    找到使a[i]-l*b[i]最大的l。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 using namespace std;
     5 
     6 const double eps = 1e-7;
     7 
     8 int n,k;
     9 double ans,a[1010],b[1010],d[1010];
    10 
    11 int main(){
    12     while(true){
    13         cin >> n >> k;
    14         if(n == 0&&k == 0)break;
    15         for(int i = 1;i <= n;i++)scanf("%lf",&a[i]);
    16         for(int i = 1;i <= n;i++)scanf("%lf",&b[i]);
    17         double l = 0.0,r = 1.0,mid;
    18         for(int i = 1;i <= 300;i++){
    19             mid = (l+r)/2;
    20             for(int i = 1;i <= n;i++)d[i] = a[i]-mid*b[i];
    21             sort(d+1,d+n+1); 
    22             double sum = 0.0;
    23             for(int i = k+1;i <= n;i++)sum += d[i];
    24             if(sum >= -eps)ans = mid,l = mid;
    25             else r = mid;
    26         }
    27         printf("%.0f
    ",ans*100);
    28     }    
    29 return 0;
    30 }
  • 相关阅读:
    npm配置国内源方法
    数据库—事务—隔离级别
    Mybatis—日志
    Mybatis—动态 SQL
    Mybatis—mapper.xml配置文件
    declare命令
    shell杂项
    流程控制语句
    第一篇博客
    Linux 命令[2]:mkdir
  • 原文地址:https://www.cnblogs.com/Wangsheng5/p/11787243.html
Copyright © 2011-2022 走看看