7 条题解
-
3
对于每个人有两种属性:编号和时间
为了使总时间最短,尽可能把时间少的放在前面
#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
原理简单,不做介绍
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
#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
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
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
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
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
- 上传者