青少年编程知识记录 codecoming

【题解】同学的等待

【题目描述】

同学们下课后去食堂,每个人都需要一段时间去点菜。

然而,某些同学点菜时间太长了。同学们对于等待很烦躁:他们希望,能尽量少的花时间等待。

(同学数<=100000),(0<=点菜耗时<=10000)

他们希望在点菜时,能排成一个次序,使得总等待时间最短(即不包括点菜人的其他所有人的等待时间)。

【输入描述】

第一行是一个数字n,表示同学的个数

接下来n个数,表示点菜的耗时

【输出描述】

一个数,表示总等待时间。

【样例输入】

6  9 1 3 5 4 2

【样例输出】

35







【参考答案】

#include <bits/stdc++.h>  using namespace std;  int s[100005];   long long n,totaltime=0,temptime=0;  int main()  {      cin>>n;      for(int i=0;i<n;i++)      {          cin>>s[i];      }      sort(s,s+n);      for(int i=1;i<n;i++)//第一个同学不用等待,即下标为0的同学      {          temptime+=s[i-1];//前缀和迭代          totaltime+=temptime; //等待时间累加      }      cout<<totaltime;      return 0;   }



作者:亿万年的星光 分类:题解目录 浏览: