8 条题解
-
1
#include <iostream> #include <algorithm> #include<iomanip> using namespace std; struct node{ int id; int t; }a[100005]; int n; double sum = 0; bool cmp(node a,node b) { if(a.t == b.t) return a.id < b.id; return a.t < b.t; } int main() { cin >> n; for(int i = 0; i < n; i++) { cin >> a[i].t; a[i].id = i + 1; } sort(a, a + n, cmp); for(int i=0;i<n;i++) { cout<<a[i].id<<" "; sum+=a[i].t*(n-i-1); } cout << endl; cout << fixed << setprecision(2) <<sum/n; return 0; }
-
1
排队接水
楼下dalao的解法稍微复杂了点,不用waitingtime这个数组也能解决。
思路很清晰:由于若把时间长的放在后面接水,那么就较少人等,所以排序+贪心即可。
对于每一个人,在场剩余每个人都要经历一次他的打水时间。
故遍历整个数组求其他人在这个人打水时花费的总时间累加到ans上,
最后ans除以n。 还要解决两位小数的保留问题!
提供两种方法
1.cout<<fixed<<setprecision(2)<<(头文件#include); 2.printf("%.2f",a)(这东西的头文件就不讲了)
上蒟蒻AC的代码
#include<queue> #include<math.h> #include<stdio.h> #include<iostream> #include<vector> #include<iomanip> #include<string.h> #include<algorithm> #include<cmath> #include<cstdio> #include<utility> #include<cstring> #include<stack> #include<fstream> #include<string> using namespace std; #define LL long long const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; int n , s[1010]; long long sum; struct lp { int id; int m; }a[1010]; int cmp( lp x ,lp y ) { if ( x.m < y.m ) { return 1; } if ( x.m == y.m && x.id < y.id ) { return 1; } return 0; } int main() { cin >> n; for ( int i = 1 ; i <= n ; i++ ) { cin >> a[i].m; s[i] = s[ i - 1 ] + a[i].m; a[i].id = i; } sort( a + 1 , a + n + 1 , cmp ); for ( int i = 1 ; i <= n ; i++ ) { cout << a[i].id << " "; } for ( int i = 1 ; i <= n ; i++ ) { sum += a[i].m * ( n - i ); } cout << fixed << setprecision(2) << endl << sum * 1.0 / n; return 0; }
提交制作不易,麻烦点赞在离开😁😁😁
-
0
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int i,n,sum; struct shui{ int id; int su; }a[N]; double ans; int cmp(shui a,shui b){ if(a.su==b.su) return a.id<b.id; return a.su<b.su; } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].su; a[i].id=i; } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++){ cout<<a[i].id<<" "; ans+=a[i].su+a[i].su*(n-i-1); } cout<<endl<<fixed<<setprecision(2)<<ans/n; return 0; }
-
0
#include <iostream> #include <algorithm> #include<iomanip> using namespace std; struct node{ int id; int t; }a[100005]; int n; double sum = 0; bool cmp(node a,node b) { if(a.t == b.t) return a.id < b.id; return a.t < b.t; } int main() { cin >> n; for(int i = 0; i < n; i++) { cin >> a[i].t; a[i].id = i + 1; } sort(a, a + n, cmp); for(int i=0;i<n;i++) { cout<<a[i].id<<" "; sum+=a[i].t*(n-i-1); } cout << endl; cout << fixed << setprecision(2) <<sum/n; return 0; }
-
0
#include <iostream> #include <bits/stdc++.h> using namespace std; int n,s[1005];long sum; struct lp{ int id; int m; }a[1005]; int cmp(lp x,lp y) { if(x.m<y.m){ return 1; } if(x.m==y.m&&x.id<y.id)return 1; return 0; } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i].m; s[i]=s[i-1]+a[i].m; a[i].id=i; } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++) { cout<<a[i].id<<" "; } for(int i=1;i<=n;i++) { sum+=a[i].m*(n-i); } cout<<fixed<<setprecision(2)<<endl<<sum*1.0/n; return 0; }
-
0
#include <bits/stdc++.h> using namespace std; const int N=1e5+10; struct stu{ int id,t; }a[1005]; int cmp(stu a,stu b){ if(a.t<b.t) return 1; else return 0; } int main(){ int n; cin>>n; sort(a,a+n,cmp); for(int i=1;i<=n;i++){ cin>>a[i].t; a[i].id=i; } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++) cout<<a[i].id<<" "; cout<<endl; double ans=0,time; for(int i=1;i<n;i++){ time=a[i].t*(n-i); ans+=time; } ans/=n; cout<<fixed<<setprecision(2)<<ans; }
-
0
#include<iostream> #include<iomanip> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<string> #include<algorithm> #define LL long long using namespace std; const int N=1e5+10; const int Inf=0x3f3f3f3f; int n; double time1 = 1.00 * 0; struct per { int t; int num; }a[N]; bool cmp(per a, per b){ if(a.t==b.t){ return a.num<b.num; } return a.t < b.t; } int main(){ int n; cin >> n; for(int i = 1; i <= n; i++) { cin >> a[i].t; a[i].num = i; } sort(a + 1, a + n + 1, cmp); int sum = n - 1; for(int i = 1; i <= n; i++) { time1 += 1.00 * a[i].t * sum; sum--; cout << a[i].num << ' ' ; } time1 /= 1.00 * n; cout << endl; printf("%.2lf", time1); }
-
0
#include <bits/stdc++.h> using namespace std; const int N=1e5+10; const int INF=0x3f3f3f3f; int n; double tim = 1.00 * 0; struct person { int t; int num; }a[N]; bool cmp(person a, person b) { return a.t < b.t; } int main() { int n; cin >> n; for(int i = 1; i <= n; i++) { cin >> a[i].t; a[i].num = i; } sort(a + 1, a + n + 1, cmp); int sum = n - 1; for(int i = 1; i <= n; i++) { tim += 1.00 * a[i].t * sum; sum--; cout << a[i].num << ' ' ; } tim /= 1.00 * n; cout << endl; printf("%.2lf", tim); } 40分
- 1
信息
- ID
- 3007
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 401
- 已通过
- 82
- 上传者