7 条题解

  • 3
    @ 2023-4-19 15:56:40

    对于每个人有两种属性:编号和时间

    为了使总时间最短,尽可能把时间少的放在前面

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 1005;
    
    int n,k;
    float sum;
    
    struct Peo
    {
    	int i,ti;	
    }P[N];
    
    bool cmp(Peo x,Peo y)
    {
    	if(x.ti == y.ti) return x.i < y.i;
    	return x.ti < y.ti;
    }
    
    int main()
    {
    	cin >> n;
    	for(int i=1;i<=n;i++)
    	{
    		cin >> P[i].ti;
    		P[i].i = i;
    	}
    	sort(P+1,P+n+1,cmp);
    	for(int i=1;i<=n;i++)
    	{
    		k=n-i;
    		cout << P[i].i <<" ";
    		sum += P[i].ti * k;
    	}
    	printf("\n%.2f",sum/n);
    	return 0;
    }
    
    • 2
      @ 2024-3-7 15:08:26

      原理简单,不做介绍

      Python

      from typing import List
      
      n: int = int(input())
      times: List[int] = list(map(int, input().split()))
      
      total: int = 0
      order: List[int] = sorted(range(n), key=lambda x: times[x])
      
      for i in range(n):
          print(order[i] + 1, end=' ')
          k: int = n - i - 1
          total += times[order[i]] * k
      
      print(f"\n{total / n:.2f}")
      
      • 2
        @ 2022-7-19 15:07:33
        #include<bits/stdc++.h>
        using namespace std;
        struct peo {
        	long long hum,t;
        } a[10086];
        bool cmp(peo a,peo b) {
        	if(a.t==b.t)return a.hum<b.hum;//若两个人的等待时间相同,那先输出序号小的那一个
        	return a.t<b.t;
        }
        int main() {
        	int n;
        	double l=0,k=0;
        	cin>>n;
        	for(int i=1; i<=n; i++) {
        		cin>>a[i].t;
        		a[i].hum=i;
        	}
        	sort(a+1,a+1+n,cmp);
        	for(int i=1; i<=n; i++) {
        		k=n-i;
        		cout<<a[i].hum<<" ";
        		l+=a[i].t*k;
        	}
        	cout<<endl;
        	printf("%.2lf",l/n);
        }
        
        • 1
          @ 2022-5-10 17:00:07

          n=int(input()) a=list(map(int,input().split())) index=[] for i in range(n): index.append(i) for i in range(1,n): for j in range(len(a)-1,i-1,-1): if a[index[j]]<a[index[j-1]]: index[j],index[j-1]=index[j-1],index[j] s=0 for i in range(n): print(index[i],end=" ") print() for i in range(n): s+=a[index[i]]*(n-i-1) print(round(s/n,2))

          • 0
            @ 2025-4-30 11:44:37
            class people:
                def __init__(self,hao,time):
                    self.hao=hao
                    self.time=time
            n=int(input())
            a=[int(i) for i in input().split()]
            p=[people(i+1,a[i]) for i in range(n)]
            p.sort(key=lambda x:x.time)
            ans=0
            for i in range(n):
                print(p[i].hao,end=' ')
                ans+=p[i].time*(n-i-1)
            print()
            print('%.2f'%(ans/n))
            

            可以用结构体排序,也可以用二维列表来表示

            • 0
              @ 2024-5-15 11:52:37
              n=int(input())
              a=list(map(int,input().split()))
              b=[]
              for i in range(n):
                  b.append([a[i],i+1])
              for i in range(1,n):
                  for j in range(n-i):
                      if b[j+1][0]<b[j][0]:
                          b[j],b[j+1]=b[j+1],b[j]
              sumtime=0
              for i in range(n):
                  sumtime+=b[i][0]*(n-i-1)
              avetime=sumtime/n
              for i in range(n-1):
                  print(b[i][1],end=" ")
              print(b[n-1][1])
              print("%.2f" % avetime)
              
              • 0
                @ 2022-5-10 17:01:45

                n=int(input()) a=list(map(int,input().split())) index=[] for i in range(n): index.append(i) for i in range(1,n): for j in range(n-1,i-1,-1): if a[index[j]]<a[index[j-1]]: index[j],index[j-1]=index[j-1],index[j] c=0 k=1 for i in range(n): print(index[i]+1,end=" ") print() for i in range(n): c+=(n-k)*(a[index[i]]) k+=1 print('%.2f'%(c/n))

                • 1

                信息

                ID
                332
                时间
                1000ms
                内存
                128MiB
                难度
                6
                标签
                递交数
                1046
                已通过
                315
                上传者