CSUSTOJ-1010-气温预测(单调栈+二分查找)

题目:

CSUSTOJ-1010-气温预测(单调栈+二分查找)_第1张图片

题解:用一个单调递增的栈,每次记录更大的值,然后碰到一个比栈顶元素小的元素则从栈尾lower_bound查找,每次记录每个位置的答案

类似题目:Codeforces-91B

代码:

#include
#define N 1000006
using namespace std;
int n,tail;
int a[N],num[N],pos[N],ans[N];
int main()
{
	while(~scanf("%d",&n))
	{
		tail=1;
		for(int i=1;i<=n;i++)scanf("%d",&a[i9]);
		for(int i=n;i>=1;i--)
		{
			if(tail-1==0||a[i]>num[tail-1])
			{
				num[tail]=a[i];
				pos[tail++]=i;
				ans[i]=0;
			}
			else if(a[i]==num[tail-1])ans[i]=0;
			else if(a[i]

 

你可能感兴趣的:(ACM_刷题,ACM_单调栈)