【蓝桥杯14天冲刺课题单】Day3
1. 题目链接:1025 答疑
贪心类型的题目做法很简单,只需要保证局部解最优即可保证整体解最优。
这里的思路就是第i个学生前面的人答疑所用的时间最短,那么他所发送短信的时间节点越小。这道题目有个需要注意的点是:要先将前i-1个学生所用的总时长加到res统计结果的计数器中,再加上第i个学生的进入时间和答疑时间才是正确的数据,不能加漏。以及语句之中的空格能不打就不打,以免出现不必要的错误。
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
struct student{
long long int s,a,e;
unsigned long long int sum1,sum2;
}stud[maxn];
bool cmp(student x,student y)
{
if(x.sum1 == y.sum1) return x.sum2<y.sum2;
else return x.sum1<y.sum1;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%lld %lld %lld",&stud[i].s,&stud[i].a,&stud[i].e);
stud[i].sum1=stud[i].s+stud[i].a+stud[i].e;
stud[i].sum2=stud[i].s+stud[i].a;
}
sort(stud,stud+n,cmp);
long long int res=0,temp=0;
for(int i=0;i<n;i++)
{
res +=temp+stud[i].sum2;
temp +=stud[i].sum1;
}
printf("%lld",res);
return 0;
}