1 条题解

  • 1
    @ 2024-12-18 21:43:22

    luogu-P1223题解

    主要题意

    nn 个人接水,安排他们的排队方式使每人平均等待时间最少。

    解题思路

    因为前面的人接水时间越少,后面的人等待时间也就越少。因此从小到大排序。

    为了同时保存每个人原来的输入下标,使用结构体保存输入数据。

    因此,平均时间就是对于每个人来说他前面的总时间求和再除以 nn

    注意输出两位小数

    上代码!

    #include<bits/stdc++.h>
    using namespace std;
    struct node
    {
    	int k,l;
    }a[1010];
    bool cmp(node x,node y)
    {
    	return x.k<y.k;
    }
    double cnt=0;
    int n;
    int main(void)
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        	cin>>a[i].k,a[i].l=i;
        sort(a+1,a+n+1,cmp);
        for(int i=1;i<=n;i++)
        	cout<<a[i].l<<" ";
        puts("");
        for(int i=1;i<=n;i++)
        	for(int j=1;j<i;j++)
        		cnt+=a[j].k;
    	printf("%.2lf",cnt/n);
    }
    
    
    • 1

    信息

    ID
    5281
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    45
    已通过
    25
    上传者