求大佬们出来讲解一下,6个WA,5个ac

P1223 排队接水

@[studentzx](/user/619944) 读入完成后根据w[i].值排序(用sort),相等则按照序号,先输出序号;然后结构体开个y,从2开始,a[i].y加上a[i-1].y和a[i-1].x,为等待时间,定义sum加上a[i].y(sum为double)。最后保留两位小数输出sum除以n(n为double)就AC了。
by William_wyx @ 2022-02-12 16:49:56


AC代码: ```cpp #include<bits/stdc++.h> using namespace std; struct per{ int x,nu,y; }a[1010]; bool cmp(per a,per b){//排序 if(a.x!=b.x)return a.x<b.x;//如果序号不一样按照接水时间排序 else return a.nu<b.nu;//否则按照序号排序 }int main(){ int n,i; double sum=0.0; cin>>n; for(i=1;i<=n;i++){ cin>>a[i].x;//输入接水时间 a[i].nu=i;//标记序号 }sort(a+1,a+1+n,cmp);//排序 for(i=1;i<=n;i++)cout<<a[i].nu<<" ";//输出序号 a[1].y=0;//第一人的等待时间为0 for(i=2;i<=n;i++){ a[i].y=a[i-1].y+a[i-1].x;//后面每个人的等待时间为前面人的等待时间+前一个人的接水时间 sum=sum+a[i].y;//sum加上每个人的等待时间 }cout<<endl<<fixed<<setprecision(2)<<sum/n;//既然是平均那么就除以n return 0; } ```
by William_wyx @ 2022-02-12 16:59:32


|