UVa11729 - Commando War (贪心/思维)
2017-09-22 17:18
267 查看
题目链接
你有n个部下,每个部下需要完成一项任务,第i个部下需要你花费Bi分钟交代任务,然后他会立刻,独立,无间断的执行Ji分钟后完成任务。你需要选择交代任务的顺序,使得所有任务尽早执行完毕(即最后一个执行完的任务应尽早结束)。注意,不能同时给两个部下交代任务,但部下们可以同时执行他们各自的任务。
输入:
第一行为一个整数n
接下来n行每行包括两个正整数,第一个整数为Bi,第二个为Ji。
输出:
所有任务最短的完成时间。
分析:
贪心,按执行时间从大到小的顺序给任务排序,然后依次交代。
思考这样为什么正确,因为我们交代任务的时间是固定的(所有任务的交代时间B之和)
但每个任务完成时间却是不固定的,如果我们把执行时间较长的任务放在前面,那么
我们在交代下一个任务时,这个时间长的任务已经开始执行了,这正是我们贪心的目标。
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct job
{
int sayTime,doTime; //交代时间,执行时间.
bool operator < (const job& A) const
{
return this->doTime > A.doTime;
}
};
job xl[1000 + 5];
int main()
{
int n ; int cnt = 0;
while(scanf("%d",&n) == 1 && n)
{
for(int i = 0;i<n;i++)
{
scanf("%d %d",&xl[i].sayTime,&xl[i].doTime);
}
sort(xl,xl+n);
int ans = 0;
int s = 0;
for(int i = 0;i<n;i++)
{
s += xl[i].sayTime; //交代任务的时间是固定的
ans = max(ans,s + xl[i].doTime); //按这样去计算,第i个任务完成的时间 = 前面所有任务的交代时间,
//加上第i个任务的执行时间,我们只需要从中选一个最大的,即是所有任务的完成时间。
}
printf("Case %d: %d\n",++cnt,ans);
}
}
你有n个部下,每个部下需要完成一项任务,第i个部下需要你花费Bi分钟交代任务,然后他会立刻,独立,无间断的执行Ji分钟后完成任务。你需要选择交代任务的顺序,使得所有任务尽早执行完毕(即最后一个执行完的任务应尽早结束)。注意,不能同时给两个部下交代任务,但部下们可以同时执行他们各自的任务。
输入:
第一行为一个整数n
接下来n行每行包括两个正整数,第一个整数为Bi,第二个为Ji。
输出:
所有任务最短的完成时间。
分析:
贪心,按执行时间从大到小的顺序给任务排序,然后依次交代。
思考这样为什么正确,因为我们交代任务的时间是固定的(所有任务的交代时间B之和)
但每个任务完成时间却是不固定的,如果我们把执行时间较长的任务放在前面,那么
我们在交代下一个任务时,这个时间长的任务已经开始执行了,这正是我们贪心的目标。
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct job
{
int sayTime,doTime; //交代时间,执行时间.
bool operator < (const job& A) const
{
return this->doTime > A.doTime;
}
};
job xl[1000 + 5];
int main()
{
int n ; int cnt = 0;
while(scanf("%d",&n) == 1 && n)
{
for(int i = 0;i<n;i++)
{
scanf("%d %d",&xl[i].sayTime,&xl[i].doTime);
}
sort(xl,xl+n);
int ans = 0;
int s = 0;
for(int i = 0;i<n;i++)
{
s += xl[i].sayTime; //交代任务的时间是固定的
ans = max(ans,s + xl[i].doTime); //按这样去计算,第i个任务完成的时间 = 前面所有任务的交代时间,
//加上第i个任务的执行时间,我们只需要从中选一个最大的,即是所有任务的完成时间。
}
printf("Case %d: %d\n",++cnt,ans);
}
}
相关文章推荐
- UVA - 11729 Commando War (贪心)
- UVA - 11729 Commando War 贪心
- Uva 11729 - Commando War ( 贪心 + 水 )
- UVa 11729 Commando War (贪心)
- UVa - 11729 - Commando War ( 排序+贪心 )
- Uva 11729 Commando War (简单贪心)
- uva11729 Commando War<贪心>
- |UVA 11729|贪心|Commando War
- Uva 11729 Commando War - 水题 - 贪心
- Uva 11729 Commando War【贪心】
- uva 11729 突击战 Commando War 思维
- UVa11729 - Commando War(贪心)
- UVA 11729 - Commando War(贪心)
- UVa 11729 Commando War 贪心
- UVA 11729 - Commando War(贪心 相邻交换法)
- UVA - 11729 Commando War (贪心)
- UVa 11729:Commando War(贪心)
- UVa 11729 Commando War 突击战(贪心)
- UVA - 11729 Commando War ( 贪心 )
- UVa 11729 - Commando War(贪心)