社区讨论

单调栈WA50pts求助,马蜂良好

P2659美丽的序列参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lw23owy8
此快照首次捕获于
2024/05/11 20:46
2 年前
此快照最后确认于
2024/05/11 22:36
2 年前
查看原帖
RT,WA#3,5,6,9,10,不知道哪里错了
CPP
#include<bits/stdc++.h>
#define enter putchar('\n')
#define space putchar(' ')
#define dot putchar(',')
#define oui putchar('Y')
#define non putchar('N')
#define si putchar('?')
#define lll (__int128)
#define ll 1LL*
using namespace std;
char buf[1<<21],*p1=buf,*p2=buf;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
template<typename T>
inline void read(T &sum){
    int tf=0;
	char ch=getchar();
	sum=0;
    while(ch<'0'||ch>'9')
		tf=ch=='-'?1:0,ch=getchar();
    while(ch>='0'&&ch<='9')
		sum=(sum<<1)+(sum<<3)+(ch^48),ch=getchar();
    (tf)&&(sum=-sum);
}
template<typename T,typename ...Args>
inline void read(T &tmp,Args &...tmps){
	read(tmp);
	read(tmps...);
}

template<typename T>
void printt(T x){
	if(x>=10)printt(x/10);
	putchar(x%10+48);
}
template<typename T>
inline void print(T x){
	x<0?putchar('-'),printt(-x):printt(x);
}
template<typename T,typename ...Args>
inline void print(T tmp,Args ...tmps){
	print(tmp);
	putchar(' ');
	print(tmps...);
}
template<typename T>
inline void put(T x){
	print(x),putchar('\n');
}
template<typename T,typename ...Args>
inline void put(T tmp,Args ...tmps){
	put(tmp);
	put(tmps...);
}
int n;
long long res=0;
long long dat[10000010];
stack<long long>num,val;


signed main(){
	read(n);
	for(int i=1;i<=n;++i){
		read(dat[i]);
	}
	
	for(int i=1;i<=n;++i){
		while((!val.empty())&&val.top()>dat[i]){
			res=max(res,val.top()*(i-num.top()));
			val.pop();
			num.pop();
		}
		val.push(dat[i]);
		num.push(i);
	}
	while(!val.empty()){
		res=max(res,val.top()*(n+1-num.top()));
		val.pop();
		num.pop();
	}
	
	for(int i=n;i>0;--i){
		while((!val.empty())&&val.top()>dat[i]){
			res=max(res,val.top()*(num.top()-i));
			val.pop();
			num.pop();
		}
		val.push(dat[i]);
		num.push(i);
	}
	while(!val.empty()){
		res=max(res,val.top()*(num.top()));
		val.pop();
		num.pop();
	}
	
	print(res); 
	return 0;
}
下载了第一个错的点的数据,在这里https://www.luogu.com.cn/paste/qi1t44sb

回复

0 条回复,欢迎继续交流。

正在加载回复...