poj Dropping tests 01分数规划---Dinkelbach算法
果然比二分要快将近一倍。63MS。二分94MS。
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <ctime>
#include <cstdlib>
#include <cmath>
using namespace std;
const int maxn=1005;
double a[maxn],b[maxn];
const double eps=1e-6;
int n,k;
struct dnode{
double x;
int index;
}d[maxn];
bool cmp(dnode a,dnode b){
return a.x>b.x;
}
int main()
{
while(scanf("%d%d", &n, &k) != EOF)
{
if(n+k==0)break;
for(int i=0;i<n;i++)
scanf("%lf", &a[i]);
for(int i=0;i<n;i++)
scanf("%lf", &b[i]);
double l=0.5,ans;
do{
ans=l;
for(int i=0;i<n;i++)
{d[i].x=a[i]-ans*b[i];
d[i].index=i;
}
sort(d,d+n,cmp);
double p=0,q=0;
for(int i=0;i<n-k;i++)
{
p+=a[d[i].index];
q+=b[d[i].index];
}
l=p/q;
}while(fabs(ans-l)>=eps); printf("%.0f\n", l * 100); }
return 0;
}
poj Dropping tests 01分数规划---Dinkelbach算法的更多相关文章
- [poj2976]Dropping tests(01分数规划,转化为二分解决或Dinkelbach算法)
		题意:有n场考试,给出每场答对的题数a和这场一共有几道题b,求去掉k场考试后,公式.的最大值 解题关键:01分数规划,double类型二分的写法(poj崩溃,未提交) 或者r-l<=1e-3(右 ... 
- 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(01分数规划---二分(最大化平均值))
		题意:有n组ai和bi,要求去掉k组,使下式值最大. 分析: 1.此题是典型的01分数规划. 01分数规划:给定两个数组,a[i]表示选取i的可以得到的价值,b[i]表示选取i的代价.x[i]=1代表 ... 
- Dropping tests(01分数规划)
		Dropping tests Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8176 Accepted: 2862 De ... 
- POJ2976 Dropping tests —— 01分数规划 二分法
		题目链接:http://poj.org/problem?id=2976 Dropping tests Time Limit: 1000MS Memory Limit: 65536K Total S ... 
- POJ2976 Dropping tests(01分数规划)
		题意 给你n次测试的得分情况b[i]代表第i次测试的总分,a[i]代表实际得分. 你可以取消k次测试,得剩下的测试中的分数为 问分数的最大值为多少. 题解 裸的01规划. 然后ans没有清0坑我半天. ... 
- 【POJ2976】Dropping tests  - 01分数规划
		Description In a certain course, you take n tests. If you get ai out of bi questions correct on test ... 
随机推荐
- app微信支付宝支付后台的插件模式+回调通过spring广播处理后续业务(已亲测可用)
			写在前面的话:每当我们做一个项目,基本上都会涉及到支付的业务,最常用的莫过于微信和支付宝的支付了,项目有bug,有问题,都不叫问题,可一旦钱出了问题,那就是大问题了,所以在支付业务上我们必须慎之又慎! ... 
- 001.DNS原理及配置格式
			一 dns简介 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串. ... 
- 初识PHP(一)
			做为一名合格的前端开发攻城狮,了解一门服务端语言是必须的,所以我选了php.都说学的第一门语言对第二门语言会产生较大的影响,确实,每当我看到一个php知识点时,就同时会想到这个知识点在Javascri ... 
- BEM
			BEM代表块(Block),元素(Element),修饰符(Modifier).BEM是由Yandex团队提出的一种CSS Class 命名方法,旨在更好的创建CSS/Sass模块.通过增加前缀的办法 ... 
- 【BZOJ 3620】 3620: 似乎在梦中见过的样子 (KMP)
			3620: 似乎在梦中见过的样子 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 755 Solved: 445 Description “Madok ... 
- C++中如何访问全局变量和全局函数
			全局变量和全局函数是相对局部变量和局部函数而言的,不在{}或者for, if 等范围内的都是全局变量或者全局函数,最简单的是在同一个文件中去声明. 例如在mian.cpp中 #include < ... 
- nodejs备忘总结(一) -- node和express安装与配置,新建简单项目(附安装配置过程中遇到问题的解决方法)
			安装node 本文以安装node_v8.9.0为例(win10环境),下载node-v8.9.0-x64.msi插件 下载后,安装,安装目录默认为C:\Program Files\nodejs 配置环 ... 
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) D. Dense Subsequence 暴力
			D. Dense Subsequence 题目连接: http://codeforces.com/contest/724/problem/D Description You are given a s ... 
- j.u.c系列(11)---之并发工具类:Exchanger
			写在前面 前面三篇博客分别介绍了CyclicBarrier.CountDownLatch.Semaphore,现在介绍并发工具类中的最后一个Exchange.Exchange是最简单的也是最复杂的,简 ... 
- java execute、executeQuery和executeUpdate之间的区别
			在用纯JSP做一个页面报警功能的时候习惯性的用executeQuery来执行SQL语句,结果执行update时就遇到问题,语句能执行,但返回结果出现问题,另外还忽略了executeUpdate的返回值 ... 
