首页 > 其他 > 详细

01分数规划

时间:2019-09-13 23:40:41      阅读:119      评论:0      收藏:0      [点我收藏+]

先上基本模板后面慢慢更新


#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <math.h>
#include <string.h>
#include <queue>
#include <string>
#define LL long long
#define _LL __int64
#define eps 1e-7
using namespace std;
const _LL INF = 1e18;
const int maxn = 1010;

int n,k;
int a[maxn],b[maxn];
double c[maxn];

int main()
{
while(~scanf("%d %d",&n,&k) && (n || k))
{
for(int i = 1; i <= n; i++)
scanf("%d",&a[i]);
for(int i = 1; i <= n; i++)
scanf("%d",&b[i]);

double l = 0.0;
double r = 1.0;
double mid;

while(fabs(r-l) > eps)
{
mid = (l+r)/2;

for(int i = 1; i <= n; i++)
c[i] = 1.0*a[i] - mid * 1.0 * b[i];
sort(c+1,c+1+n);
double sum = 0.0;
for(int i = k+1; i <= n; i++)
sum += c[i];
if(sum > 0)
l = mid;
else if(sum < 0)
r = mid;
else break;
}
mid = mid*100;
printf("%.0f\n",mid);
}
return 0;
}

01分数规划

原文:https://www.cnblogs.com/hgangang/p/11517952.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!