题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)呀,相当于多了一个循环就超时了吗,这题时间复杂度怎么算的,小白不懂

全部评论
t组数据每次memset的时间复杂度是O(n),t最多有1e5组,数组开的大小是2e5,不就超时了嘛
2 回复 分享
发布于 2023-12-02 13:12 浙江

相关推荐

09-22 22:22
中山大学 Java
乌鱼子萨奇:羡慕你啊,直接转正了,都不用经历秋招的炼狱,但是你少经历了很多痛苦的事情啊
点赞 评论 收藏
分享
09-22 09:42
门头沟学院 Java
牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
如果可以选,你最想去哪家...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务