8 条题解

  • 1
    @ 2025-10-18 18:20:00
    #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
      @ 2025-8-13 9:20:07

      排队接水

      楼下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
        @ 2025-10-18 18:39:53
        #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
          @ 2025-10-18 18:18:36
          #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
            @ 2024-8-11 17:42:00
            #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
              @ 2024-7-30 10:20:08
              #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
                @ 2024-5-30 21:55:23
                #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
                  @ 2024-3-24 15:37:19
                  #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
                上传者