1 条题解
-
0
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
- 上传者