3 条题解

  • 0
    @ 2023-5-31 23:33:18

    #include <bits/stdc++.h> using namespace std;

    int main() { long long n, r; cin >> n >> r; long long a[n], s[r]; for (long long i = 0; i < n; i++) { cin >> a[i]; } sort(a, a + n); for (long long i = 0; i < r; i++) { s[i] = a[i]; } for (long long i = r; i < n; i++) { s[i] = a[i] + s[i - r]; } long long sum = 0; for (long long i = 0; i < n; i++) { sum += s[i]; } cout << sum; return 0; }

    • 0
      @ 2023-3-19 10:41:04

      #include<bits/stdc++.h> using namespace std; void maopao(int a[],int n) { bool ok; for(int i=n-1;i>=1;i--) { ok=true; for(int j=0;j<i;j++) { if(a[j]>a[j+1]) { swap(a[j],a[j+1]); ok=false; } } if(ok==true) break; } } int main() { int n; int r; int a[510]; int b[510]; cin>>n>>r; int sum=0; for(int i=0;i<n;i++) { cin>>a[i]; } maopao(a,n); for(int i = 0; i < r; i++) { b[i] = a[i]; } for(int i = r; i < n; i++) { b[i] = b[i - r] + a[i]; } for(int i = 0; i < n; i++) { sum += b[i]; } cout<<sum<<endl; }

      • -2
        @ 2022-11-30 19:27:45
        #include<iostream>
        using namespace std;
        
        //将打水时间从小到大排序 
        void maopao(int a[],int n){
        	bool ok;
        	//进行N-1轮排序 
        	for(int i=n-1;i>=1;i--){
        		
        		ok=true;//假设没有交换
        		 
        		//每轮进行i次排序
        		for(int j=0;j<i;j++){
        			//大的数往下沉 
        			if(a[j]>a[j+1]){
        				//相互交换 C++自带函数 
        				swap(a[j],a[j+1]);
        				ok=false;//一旦发生过交换,标志设置成false,说明需要下一轮 
        			}
        		} 
        		
        		//如果此轮没有发生过交换,说明数组已经排序完成
        		//无需下一轮比较跳出循环
        		if(ok==true)
        			break; 
        	}
        	
        }
         
        int main(){
        	
        	int n;//打水的人数
        	int r;//水龙头的个数
        	int a[510];//每个人的打水时间 
        	int b[510];//每个人真正打水的时间= 打水时间+等待时间 
        	cin>>n>>r;
        	
        	int sum=0;//所有人所用打水时间 
        	 
        	//输入每个人的打水时间 
        	for(int i=0;i<n;i++){
        		cin>>a[i];
        	}
        	
        	//对打水时间进行由小到大排序
        	 maopao(a,n);
        	 
        	 //实体水龙头r个,前r个人无需等待,直接保存前r个人的打水时间 
        	for(int i = 0; i < r; i++)    
            {    
                b[i] = a[i];    
            }    
        
        	//虚拟水龙头n-r个, 等于其等待时间,i - r 相当于从第1个水龙头顺序排下来 
        	for(int i = r; i < n; i++)    
            {    
                b[i] = b[i - r] + a[i];    
            }    
        	
        	//统计所有人打水时间 
        	for(int i = 0; i < n; i++)    
            {    
                sum += b[i];    
            }   
        	
        	cout<<sum<<endl; 
        }
        
        
        • 1

        信息

        ID
        228
        时间
        1000ms
        内存
        32MiB
        难度
        6
        标签
        递交数
        166
        已通过
        47
        上传者