1 条题解

  • 0
    @ 2023-6-11 12:16:28

    C :

    #include<stdio.h>
    int m,n,a[550],r[110];
    int main()
    {
    	scanf("%d %d",&n,&m);
    	for(int i=1;i<=n;i++)
    	scanf("%d",&a[i]);
    	for(int i=1;i<n;i++)
    	for(int j=i+1;j<=n;j++)
    	if(a[i]>a[j])
    	{
    		int t=a[i];
    		a[i]=a[j];
    		a[j]=t;
    	}
    	int t=1;
    	for(int i=1;i<=n;i++)
    	{
    		if(t==m+1)	t=1;
    		a[i]+=r[t];
    		r[t]+=a[i];
    		t++;
    	}
    	int s=0;
    	for(int i=1;i<=m;i++)
    	s+=r[i];
    	printf("%d",s);
    	return 0;
    }
    

    C++ :

    #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; 
    }
    

    Python :

    a=list(map(int,input().split()))
    l=list(map(int,input().split()))
    for i in range(0,len(l)-1):
        for j in range(0,len(l)-1-i):
            if l[j]>l[j+1]:
                t=l[j]
                l[j]=l[j+1]
                l[j+1]=t
    s=0
    for i in l:
        s+=i
    for i in range(a[0]-a[1]):
        s+=l[i]
    print(s)
    
    • 1

    信息

    ID
    2160
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者