P1223 排队接水

题目链接 https://www.luogu.com.cn/problem/P1223

呃。。。。。。是一道很水的题。。。。

不过好像是第一次用双关键字排序(?)

关于为什么是将所用时间从小到大排序,初中学不等式应该证明过→https://www.luogu.com.cn/blog/user26231/solution-p1223


放AC代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct a
 4 {
 5     int t;
 6     int num;
 7 };
 8 bool cmp(a x,a y)//双关键字排序
 9 {
10     if(x.t!=y.t) return x.t<y.t;
11     return x.num<y.num;
12 }
13 int main()
14 {
15     struct a a[1010];
16     int n;
17     double time=0;
18     cin>>n;
19     for(int i=1;i<=n;i++)
20     {
21         cin>>a[i].t;
22         a[i].num=i;
23     }
24     sort(a+1,a+n+1,cmp);
25     for(int i=1;i<=n;i++)//输出时间从小到大所对应的人的编号
26         cout<<a[i].num<<" ";
27     cout<<endl;
28     for(int j=n-1;j>=1;j--)
29     {
30         int i=n-j;
31         time+=a[i].t*j;
32     }
33     printf("%0.2lf",time/n);
34     return 0;
35 }

 

posted @ 2022-04-06 20:51  爱吃虾滑  阅读(38)  评论(0编辑  收藏  举报