码迷,mamicode.com
首页 > 其他好文 > 详细

Chang'an(Hack-01分数规划)

时间:2015-04-22 09:34:30      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

技术分享

01分数规划



#include <bits/stdc++.h>

using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define MAXN (200000)
#define eps (1e-6)
int T;
int f[MAXN],g[MAXN];
double e[MAXN];
int main()
{
//	freopen("model2.in","r",stdin);
	cin>>T;
	For(kcase,T)
	{
		int n,k;
		scanf("%d%d",&n,&k);
		For(i,n) scanf("%d",&f[i]);
		For(i,n) scanf("%d",&g[i]);
		For(i,n) f[i]*=g[i];
		
		double l=0,r=100;
		while((r-l)>eps)
		{
			double m=(r+l)/2,ans=0;
			For(i,n) e[i]=(double)f[i]-m*(double)g[i];
			sort(e+1,e+1+n);
									
			ForkD(i,k+1,n)
			ans+=e[i];
			
			ForD(i,k) 
			{
				if (e[i]>0) ans+=e[i];
				else break;
			}
			
			if (ans>=0) l=m;
			else r=m;			
		}
		
		
		
		printf("Case #%d:\n%.3lf\n",kcase,l);
	}
	
	return 0;
}










Chang'an(Hack-01分数规划)

标签:

原文地址:http://blog.csdn.net/nike0good/article/details/45190115

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!