一个问题
  • 板块P2367 语文成绩
  • 楼主cjihyy
  • 当前回复10
  • 已保存回复10
  • 发布时间2022/7/15 15:07
  • 上次更新2023/10/27 20:12:50
查看原帖
一个问题
490748
cjihyy楼主2022/7/15 15:07

为什么这道题sort反而不如擂台快?

#include <bits/stdc++.h>
using namespace std;
const int maxn=5000005;
int a[maxn],d[maxn];
int main(){
	int n,p;
	cin>>n>>p;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		d[i]=a[i]-a[i-1];
	}
	for(int i=1;i<=p;i++){
		 int x,y,z;
		 cin>>x>>y>>z;
		 d[x]+=z;
		 d[y+1]-=z;
	}
	for(int i=1;i<=n;i++){
		a[i]=d[i]+a[i-1];
	}
	sort(a+1,a+1+n);
   cout<<a[1];
	return 0;
}

如上,这份代码会TLE最后一个点 而下面这份代码则不会

#include <bits/stdc++.h>
using namespace std;
const int maxn=5000005;
int a[maxn],d[maxn];
int main(){
	int n,p;
	cin>>n>>p;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		d[i]=a[i]-a[i-1];
	}
	for(int i=1;i<=p;i++){
		 int x,y,z;
		 cin>>x>>y>>z;
		 d[x]+=z;
		 d[y+1]-=z;
	}
	for(int i=1;i<=n;i++){
		a[i]=d[i]+a[i-1];
	}
	int min=1e9;
	for(int i=1;i<=n;i++)
		if(min>a[i])min=a[i];
	cout<<min;
	return 0;
}

就很奇怪(害我检查半天

2022/7/15 15:07
加载中...