题2的时间复杂度
#include<bits/stdc++.h> using namespace std; double p[200005]; int main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); int t; cin>>t; while(t--){ memset(p,0,sizeof(p)); int n,x,y; cin>>n>>x>>y; for(int i=1;i<=n;i++){ cin>>p[i]; } if(n==1){ double x; if(p[0]<=y)x=0; else x=p[0]-y; double y=p[0]*x*0.01; cout<<min(x,y)<<endl; continue; } sort(p+1,p+1+n); double sum=0; double temp1=p[n]; double temp2=p[n-1]; double sum3=0; for(int i=1;i<=n-2;i++){ sum3+=p[i]; }//先把前n-2个商品加起来 p[n]=p[n]*x*0.01; if(p[n-1]<=y)p[n-1]=0; else p[n-1]-=y; sum=sum3+p[n]+p[n-1]; double sum2=0; p[n]=temp1,p[n-1]=temp2; p[n-1]=p[n-1]*x*0.01; if(p[n]<=y)p[n]=0; else p[n]-=y; sum2=sum3+p[n]+p[n-1]; cout<<min(sum,sum2)<<endl; } return 0; }
我把memset去掉就过了,memset的时间复杂度才o(n)呀,相当于多了一个循环就超时了吗,这题时间复杂度怎么算的,小白不懂