poj2976(01分数规划)
poj2976
题意
给出 a b 数组,一共 n 对数,其中最多可以去掉 k 对,问怎样使剩下比率(原始比率是 $ \frac{\sum_{i=1}^{n} a}{\sum_{i=1}^{n} b}*100 $)最大。
分析
设 \(l=\frac{\sum a}{\sum b}\),我们要求使得 l 最大,构造新函数 \(F()={\sum a}-l*{\sum b}\),设\(D()=a-l*b\),显然 F() 是随 l 增大单调递减的,如果对于某个 l 使得 F() > 0 ,
则有 \(\frac{\sum a}{\sum b}>l\),那么我们可以知道此时存在比l更优的值(我们要 l 尽可能大);当 F() = 0 时,这个 l 即为所求值;当 F() < 0 时,无意义,此时的 l 根本取不到。
那么 F() 函数的功能是让我们可以不断逼近答案(即告诉我们后面有更优的值),如果我们现在选定了一个 l ,计算出 D 数组,从大到小选 n - k 个,这样使 F() 最大(F()越大,那么告诉我们后面存在更大的 l )。可以二分 l 当 F(l) >= 0 时,l = mid,否则,r = mid。
code
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int MAXN = 1e3 + 10;
const double INF = 1e15;
int n, k;
int a[MAXN], b[MAXN];
double d[MAXN];
int work(double rate) {
    for(int i = 0; i < n; i++) {
        d[i] = a[i] - rate * b[i];
    }
    sort(d, d + n);
    double F = 0;
    for(int i = n - 1; i >= k; i--) {
        F += d[i];
    }
    return F >= 0;
}
double solve() {
    double l = 0, r = 1, mid = 0;
    while(r - l > 1e-5) {
        mid = (l + r) / 2;
        if(work(mid)) l = mid;
        else r = mid;
    }
    return mid * 100;
}
int main() {
    while(cin >> n >> k && (n + k)) {
        for(int i = 0; i < n; i++) {
            cin >> a[i];
        }
        for(int i = 0; i < n; i++) {
            cin >> b[i];
        }
        printf("%.0f\n", solve());
    }
    return 0;
}
												
											poj2976(01分数规划)的更多相关文章
- poj2976(01分数规划)
		
poj2976 题意 给出 a b 数组,一共 n 对数,其中最多可以去掉 k 对,问怎样使剩下比率(原始比率是 $ \frac{\sum_{i=1}^{n} a}{\sum_{i=1}^{n} b} ...
 - Dropping tests [POJ2976] [01分数规划]
		
Description 今年有 n 场 ACM-ICPC 竞赛,小明每场都有资格参加.第 i 场竞赛共有 b[i] 道题.小明预测第 i场他能做出 a[i] 道题.为了让自己看着更“大佬”一些,小明想 ...
 - [poj2976]Dropping tests(01分数规划,转化为二分解决或Dinkelbach算法)
		
题意:有n场考试,给出每场答对的题数a和这场一共有几道题b,求去掉k场考试后,公式.的最大值 解题关键:01分数规划,double类型二分的写法(poj崩溃,未提交) 或者r-l<=1e-3(右 ...
 - POJ2976:Dropping tests(01分数规划入门)
		
In a certain course, you take n tests. If you get ai out of bi questions correct on test i, your cum ...
 - [转]01分数规划算法  ACM 二分 Dinkelbach 最优比率生成树 最优比率环
		
01分数规划 前置技能 二分思想最短路算法一些数学脑细胞? 问题模型1 基本01分数规划问题 给定nn个二元组(valuei,costi)(valuei,costi),valueivaluei是选择此 ...
 - POJ3621Sightseeing Cows[01分数规划 spfa(dfs)负环 ]
		
Sightseeing Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9703 Accepted: 3299 ...
 - ZOJ 2676 Network Wars ★(最小割算法介绍 && 01分数规划)
		
[题意]给出一个带权无向图,求割集,且割集的平均边权最小. [分析] 先尝试着用更一般的形式重新叙述本问题.设向量w表示边的权值,令向量c=(1, 1, 1, --, 1)表示选边的代价,于是原问题等 ...
 - POJ 2728 Desert King ★(01分数规划介绍 && 应用の最优比率生成树)
		
[题意]每条路径有一个 cost 和 dist,求图中 sigma(cost) / sigma(dist) 最小的生成树. 标准的最优比率生成树,楼教主当年开场随手1YES然后把别人带错方向的题Orz ...
 - 【Earthquake, 2001 Open 】 0-1 分数规划
		
71 奶牛施工队一场地震把约翰家园摧毁了,坚强的约翰决心重建家园.约翰已经修复了 N 个牧场,他需要再修复一些道路把它们连接起来.碰巧的是,奶牛们最近也成立了一个工程队,专门从事道路修复.而然,奶牛 ...
 
随机推荐
- 为什么要内存对齐 Data alignment: Straighten up and fly right
			
转载于http://blog.csdn.net/lgouc/article/details/8235471 为了速度和正确性,请对齐你的数据. 概述:对于所有直接操作内存的程序员来说,数据对齐都是很重 ...
 - os--留
			
os.path.abspath(path) #返回绝对路径 绝对路径和文件路径的区别,绝对路径是当前在操作文本的路径,文件路径是当前文本的文件的路径 os.path.basename(path) ...
 - Python全栈 MySQL 数据库(SQL命令大全、MySQL 、Python调用)
			
为了梦想与了信仰 开局一张图 主要三个方面: 1.Linux终端命令 2.MySQL语句 3.Python调用 先删库 再跑路..... ...
 - ironic baremetal node status
			
参考: https://docs.openstack.org/ironic/latest/contributor/states.html https://docs.openstack.org/iron ...
 - C# 命名管道
			
有些场合需要高效率,进行线程间通信,可以使用 C#命名管道.
 - Scala 基础(8)—— 占位符_和部分应用函数
			
1. 占位符 _ 针对 Scala 基础(7)—— 函数字面量和一等函数 中最后提到的,关于 filter 函数字面量的精简写法,可以使用占位符 _ 来代替. 占位符_,用来表示一个或者多个参数.(这 ...
 - 【bzoj4894】天赋  矩阵树定理
			
题目描述 小明有许多潜在的天赋,他希望学习这些天赋来变得更强.正如许多游戏中一样,小明也有n种潜在的天赋,但有一些天赋必须是要有前置天赋才能够学习得到的.也就是说,有一些天赋必须是要在学习了另一个天赋 ...
 - Android 热更新是如何实现的?
			
Android开发中,我们常常遇到热更新这个概念,而这个热更新具体是怎么实现的呢?今天在网上看到一个大神分享的热更新相关实现原理和实现代码,感觉灰常不错,分享给广大码农盆友look look . Cl ...
 - 【CF Round 439 E. The Untended Antiquity】
			
time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standa ...
 - python tornado对接权限中心的sdk封装
			
# -*- coding: utf-8 -*- import json import requests import logging as logger from python.akskapp.scr ...