poj2751(双机调度)

来源:互联网 发布:达观数据 编辑:程序博客网 时间:2024/05/16 08:21

http://poj.org/problem?id=2751

源代码:

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<algorithm>

using namespace std;

#define N 10001
struct node
{
 int flag,t,id;
 bool operator<(node &a)const
 {
  return t<a.t;
 }
};
int a[N];
int b[N];
node d[N];
node c[N];

int flowshop(int n)
{
 int i;
 for(i=0;i<n;i++)
 {
  if(a[i]<b[i])
  {
   d[i].flag=1;
   d[i].t=a[i];
  }
  else
  {
   d[i].flag=0;
   d[i].t=b[i];
  }
  d[i].id=i;
 }
 sort(d,d+n);
 int left=0;
 int right=n-1;
 for(i=0;i<n;i++)
 {
  if(d[i].flag)
   c[left++]=d[i];
  else
   c[right--]=d[i];
 }
 int j=a[c[0].id];
 int sum=j+b[c[0].id];
 for(i=1;i<n;i++)
 {
  j+=a[c[i].id];
  sum=j<sum?sum+b[c[i].id]:j+b[c[i].id];
 }
 return sum;
}

int main()
{
 int n;
 while(scanf("%d",&n)!=EOF&&n)
 {
  for(int i=0;i<n;i++)
   scanf("%d %d",&a[i],&b[i]);
  int min=flowshop(n);
  printf("%d\n",min);
 }
 return 0;
}

 

原创粉丝点击