关于这两份代码的区别
查看原帖
关于这两份代码的区别
947854
ztyo_zysclown楼主2023/11/25 19:20

这是70分的

#include<bits/stdc++.h>
using namespace std;
#define int long long
int op[1145140],oy[1145140];
int venti[1145140];
stack<int> a;
int n;
signed main(){
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>op[i]>>oy[i];
	}
	for(int i=n;i>=1;i--){
		while(!a.empty()&&op[a.top()]<op[i]){
			venti[i]+=oy[a.top()];
			a.pop();
		}
		if(a.empty()){
			venti[i]=0;
		}
		else{
			venti[a.top()]+=oy[i];
		}
		a.push(i);
	}
	int y=-1e9;
	for(int i=1;i<=n;i++){
		y=max(y,venti[i]);
	}
	cout<<y;
	return  0;
	return 0;
}

这是按照题解修改之后的AC代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
int op[1145140],oy[1145140];
int venti[1145140];
stack<int> a;
int n;
signed main(){
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>op[i]>>oy[i];
	}
	for(int i=n;i>=1;i--){
		while(!a.empty()&&op[a.top()]<op[i]){
			venti[i]+=oy[a.top()];
			a.pop();
		}
		if(!a.empty()){
			venti[a.top()]+=oy[i];
		}
		a.push(i);
	}
	int y=-1e9;
	for(int i=1;i<=n;i++){
		y=max(y,venti[i]);
	}
	cout<<y;
	return  0;
	return 0;
}

个人认为这并没有什么区别啊,求大佬解答

2023/11/25 19:20
加载中...