POJ 2976 Dropping tests:01分数规划【二分】
题目链接:http://poj.org/problem?id=2976
题意:
共有n场考试,每场考试你得的分数为a[i],总分为b[i]。
你可以任意去掉k场考试。
问你最大的 100.0 * ( ∑ a[i] / ∑ b[i] )的值。(四舍五入)
题解:
相当于从n场考试中选n-k场。
二分:
二分最大答案 ∑ a[i] / ∑ b[i] >= L
即:∑ a[i] - ∑(b[i]*L) >= 0
check函数:
求数组val[i] = a[i] - b[i]*L
将val排序。
取最大的n-k个val[i],求和为sum。
若sum >= 0则满足条件,lef = mid.
否则rig = mid.
AC Code:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define MAX_N 1005
#define INF 10000000
#define EPS 0.000001 using namespace std; int n,m;
double ans;
double a[MAX_N];
double b[MAX_N];
double val[MAX_N]; void read()
{
for(int i=;i<n;i++)
{
scanf("%lf",&a[i]);
}
for(int i=;i<n;i++)
{
scanf("%lf",&b[i]);
}
} bool is_legal(double x)
{
for(int i=;i<n;i++)
{
val[i]=a[i]-x*b[i];
}
sort(val,val+n);
double sum=;
for(int i=n-;i>=m;i--)
{
sum+=val[i];
}
return sum>=;
} void solve()
{
double lef=;
double rig=;
while(rig-lef>EPS)
{
double mid=(lef+rig)/2.0;
if(is_legal(mid)) lef=mid;
else rig=mid;
}
ans=lef;
} void print()
{
printf("%.0f\n",ans*100.0);
} int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n== && m==) break;
read();
solve();
print();
}
}
POJ 2976 Dropping tests:01分数规划【二分】的更多相关文章
- POJ - 2976 Dropping tests(01分数规划---二分(最大化平均值))
题意:有n组ai和bi,要求去掉k组,使下式值最大. 分析: 1.此题是典型的01分数规划. 01分数规划:给定两个数组,a[i]表示选取i的可以得到的价值,b[i]表示选取i的代价.x[i]=1代表 ...
- POJ 2976 Dropping tests 01分数规划 模板
Dropping tests Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6373 Accepted: 2198 ...
- POJ 2976 Dropping tests 01分数规划
给出n(n<=1000)个考试的成绩ai和满分bi,要求去掉k个考试成绩,使得剩下的∑ai/∑bi*100最大并输出. 典型的01分数规划 要使∑ai/∑bi最大,不妨设ans=∑ai/∑bi, ...
- $POJ$2976 $Dropping\ tests$ 01分数规划+贪心
正解:01分数规划 解题报告: 传送门! 板子题鸭,,, 显然考虑变成$a[i]-mid\cdot b[i]$,显然无脑贪心下得选出最大的$k$个然后判断是否大于0就好(,,,这么弱智真的算贪心嘛$T ...
- [poj 2976] Dropping tests (分数规划 二分)
原题: 传送门 题意: 给出n个a和b,让选出n-k个使得(sigma a[i])/(sigma b[i])最大 直接用分数规划.. code: //By Menteur_Hxy #include & ...
- POJ 2976 Dropping tests(分数规划)
http://poj.org/problem?id=2976 题意: 给出ai和bi,ai和bi是一一配对的,现在可以删除k对,使得的值最大. 思路: 分数规划题,可以参考<挑战程序竞赛> ...
- [poj2976]Dropping tests(01分数规划,转化为二分解决或Dinkelbach算法)
题意:有n场考试,给出每场答对的题数a和这场一共有几道题b,求去掉k场考试后,公式.的最大值 解题关键:01分数规划,double类型二分的写法(poj崩溃,未提交) 或者r-l<=1e-3(右 ...
- Dropping tests(01分数规划)
Dropping tests Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8176 Accepted: 2862 De ...
- POJ - 3111 K Best 0-1分数规划 二分
K Best Time Limit: 8000MS Memory Limit: 65536K Total Submissions: 12812 Accepted: 3290 Case Time ...
- POJ2976 Dropping tests —— 01分数规划 二分法
题目链接:http://poj.org/problem?id=2976 Dropping tests Time Limit: 1000MS Memory Limit: 65536K Total S ...
随机推荐
- linux 挂载移动盘
http://www.2cto.com/os/201411/354319.html 磁盘出现问题,有时候卸载不掉 参见http://blog.csdn.net/davil_dev/article/de ...
- el表达式注意
如果action那边是String类型,el表达式进行判断的时候必须加引号,即使是数字也要加. 否则可能导致windows正常,linux出错.
- boost库shared_ptr实现桥接模式
主程序 /*将抽象部分与实现部分分离,使它们都能够独立的变化*/ #include "bridge.h" int main() { cout <<"main ...
- 怎样推断 ios设备的类型(iphone,ipod,ipad)
-(bool)checkDevice:(NSString*)name { NSString* deviceType = [UIDevice currentDevice].model; NSLog(@& ...
- 一些Python黑客脚本
[Github项目地址] https://github.com/threeworld/Python
- 一起学Django之Day01
创建项目 SimilarFacedeMacBook-Pro:PycharmProjects similarface$ django-admin startproject StudyDjango 创建A ...
- python sax解析xml
#books.xml<catalog> <book isbn="0-596-00128-2"> <title>Python & XML& ...
- 深入浅出Attribute(二)
上篇里,我们把Attribute“粘”在类的成员方法上show了一把,让Attribute跟大家混了个脸儿熟.中篇里,我们将探讨“究竟什么是Attribute”和“如何创建及使用Attribute”这 ...
- TensorFlowSharp
https://github.com/migueldeicaza/TensorFlowSharp
- Refused to set unsafe header
Refused to set unsafe header Refused to set unsafe header "Host"waitServerDeal @ tGet.html ...