蓝桥杯真题--答疑


对于第一位同学来说,由于发消息是在收拾离开之前发生的,所以他发消息的时间就是他的进门时间s + 答疑时间a

对于第二位同学,他发消息的时间除了自己进门的时间 + 答疑时间,还应该包括前一位同学的进门时间 + 答疑时间 + 收拾时间

以此类推  

为了保证总的时间最短,需要安排进门时间 + 答疑时间 + 收拾时间 最少的同学在最前面。若两个同学的总时间相同,则将 进门时间 + 答疑时间短的同学安排在前面。

#include <iostream>
#include <algorithm>
using namespace std;
struct stu{
  int a;
  int s;
  int e;
  int sum;
}student[1001];
bool cmp(stu x,stu y){
  if((x.a+x.s+x.e)==(y.a+y.s+y.e))return (x.s+x.a) < (y.s+y.a);
  else return (x.a+x.s+x.e)<(y.a+y.s+y.e);
}
int main()
{
  // 请在此输入您的代码
  int n;
  long long ans=0;
  cin >> n;
  for(int i=0;i<n;i++){
    cin >> student[i].s >> student[i].a >> student[i].e;
  }
  sort(student,student+n,cmp);
  student[0].sum = student[0].a + student[0].s;
  ans = ans + student[0].sum;
  for(int i=1;i<n;i++){
    student[i].sum += student[i].a + student[i].s +student[i-1].sum + student[i-1].e;
    ans += student[i].sum;
  }
  cout << ans << endl;
  return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值