8th_C

[b]C. 大作业[/b]
[b]问题描述[/b]
由于之前宅得太深,到了期末了,嘉娃还有 N 个大作业没有写。以嘉娃的速度,他
每天能且只能完成一个大作业。但是这 N 门大作业都有一个截止时间,如果超过这个
时间再提交的话将会没有分数。现在,嘉娃要在 N 天内完成 N 门大作业,他给了你一
份有 N 个大作业的截止时间和分数的列表,你能帮嘉娃算出他最多能得到多少分吗?
[b]输入格式[/b]
第一行一个整数 N (0 ≤ N ≤ 1000),表示大作业的数目。接下来 N 行,每行两个
整数。 di (1 ≤ di ≤ N ) 表示第 i 个大作业的截止时间,以嘉娃开始做大作业开始算;
pi (1 ≤ pi ≤ 500) 表示第 i 个大作业的分数。
[b]输出格式[/b]
输出一个整数,表示嘉娃能得到的最多的分数。之后加一个换行。
[b]样例输入[/b]
5
3 500
2 100
2 250
1 290
5 200
[b]样例输出[/b]
1240
[b]提示[/b]
解决问题的关键在于每个大作业恰好需要一天的时间完成

#include<cstdio>

struct unit{
int day;
int score;
bool done;
};
unit a[1001];
int n;
int result=0;

int main(){
int max;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d %d",&(a[i].day),&(a[i].score));
a[i].done=false;
}
for(int i=n;i>0;i--){
max=-1;
for(int j=0;j<n;j++){
if((a[j].day>=i)&&(!a[j].done)){
if((-1==max)||(a[j].score>a[max].score)){
max=j;
}
}
}
if(-1!=max){
result+=a[max].score;
a[max].done=true;
}
}
printf("%d\n",result);
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值