brief introduction :
Each soilder needs to complete own task seperately,in other words his task did't depend on other soilder's help.
you ,as a commander,need to assign the task to each other , you have already know how much time it cost to assign and finish the task ,you need to calculate the minimum time it cost.
algorithm: The most important is to know that we must sum all assin time for each soilder. and we need to sort the finish time of the work from largest to smallest. and then we can calculate each soider's task finished time,and select the minimum one;
Here is the code:
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int plan,finish;
}soilder[2000];
int cmp(node a,node b){
return a.finish>b.finish;
}
int main(){
int n,sum,kase=0;
while(scanf("%d",&n)!=EOF){
kase++;
if(n==0)break;
for(int i=1;i<=n;i++)
scanf("%d%d",&soilder[i].plan,&soilder[i].finish);
sort(soilder+1,soilder+1+n,cmp);
sum=0;
int max=-1;
for(int i=1;i<=n;i++){
sum+=soilder[i].plan; //sum all the soilders assign time is nessary
int temp=sum+soilder[i].finish; //calculate finished time of each soilder
if(max<temp)max=temp; //
}
printf("Case %d: %d\n",kase,max);
}
return 0;
}

本文介绍了一种用于分配士兵独立完成任务的算法。该算法通过排序并累加任务分配时间来计算最小总耗时。适用于需要独立完成任务且不依赖其他士兵帮助的场景。

被折叠的 条评论
为什么被折叠?



