首页 新闻 会员 周边

简单的竞赛题:突击战

0
悬赏园豆:20 [待解决问题]

你有n个部下,每个部下需要完成一项任务。第i个部下需要你花Bi分钟交代任务,然后他会独立地、无间断地执行Ji分钟后完成任务。你需要选择交代任务的顺序,使得所有任务尽早执行完毕(即最后一个执行完的任务应尽早结束)。注意,不能同时给两个部下交代任务,但部下们可以同时执行他们各自的任务。

输入格式:

输入包含多组数据,每组数据的第一行为部下的个数N(1<=n<=1000);以下N行每行两个正整数B和J(1<=B<=10000,1<=J<=10000),即交代任务的时间和执行任务的时间。输入结束表示为N=0。

输出格式:

对于每组数据,输出所有任务完成的最短时间。

 

样例输入:

3

2 5

3 2

2 1

3

3 3

4 4

5 5

0

 

 

求一个用c++的class类的方法写的代码,谢谢大佬。

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
struct work {
int fen;
int zuo;

}ren[10001];
bool cmp(work a, work b) {
return a.zuo>b.zuo;

}
int main() {
int n, count = 1;
while (~scanf("%d", &n) && n) {
for (int i = 0; i<n; i++)
scanf("%d %d", &ren[i].fen, &ren[i].zuo);
sort(ren, ren + n, cmp);
int sum = 0, ans = 0;
for (int i = 0; i<n; i++)
{
ans += ren[i].fen;
if (ans + ren[i].zuo>sum)
sum = ans + ren[i].zuo;
}
printf("Case %d: %d\n", count++, sum);

}


}

 

这里有思路。

 

下面是我写的,可以给点指点。

#include<iostream>
#include<algorithm>
using namespace std;
class work
{
public :
work(int x,int y);
void print();
bool com(int x,int y);
private:
int fen;
int zuo;
}w[1000];
work::work(int x,int y)
{
fen = x;
zuo = y;
}
void work::print()
{
cout << fen << zuo << endl;
}
bool com(work.fen1, work.fen2 )
{

return f1 > f2;
}
int main()
{
int n;
while ((cin >> n) && n != 0)
{
for (int i = 0; i < n; i++) {
int x, y;
cin >> x>>y;
w[i] = work(x, y);
}
sort();


}
return 0;
}  不过我写不出来。

lovelyai的主页 lovelyai | 初学一级 | 园豆:156
提问于:2017-07-24 17:44
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册