poj2751(双机调度)

本文介绍了如何解决POJ2751双机调度问题,通过定义结构体并使用排序算法,实现求解最小总加工时间。主要涉及到C语言编程,包括结构体、排序及数组操作。代码中定义了节点结构,根据输入数据计算每个任务的优先级,并按时间排序,最后计算最小总加工时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值