社区讨论

90分TLE求改进

P1970[NOIP 2013 提高组] 花匠参与者 2已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@m2ei0jfr
此快照首次捕获于
2024/10/18 16:59
去年
此快照最后确认于
2025/11/04 16:56
4 个月前
查看原帖
最后一个测试点TLE了,想不出来如何进一步优化了,求助
CPP
#include<bits/stdc++.h>
using namespace std;
int main()
{//b[i]为长度为i且最后一个大于前一个情况下最后一个的最大值
//c[i]为长度为i且最后一个小于前一个情况下最后一个的最小值 
	int n,i,j,bl=0,cl=0;
	cin>>n;
	int a[n],b[n],c[n];
	cin>>a[0];
	b[0]=a[0];
	c[0]=a[0];
	for(i=1;i<n;i++)
	{
		cin>>a[i];
		b[i]=0x80000000;
		c[i]=0x7fffffff;
		for(j=bl;j>=0;j--)
			if(a[i]<b[j] && a[i]<c[j+1])
			{
				c[j+1]=a[i];
				if(cl<j+1)
					cl=j+1;
				break;
			}
		for(j=cl;j>=0;j--)
			if(a[i]>c[j] && a[i]>b[j+1])
			{
				b[j+1]=a[i];
				if(bl<j+1)
					bl=j+1;
				break;
			}
	 } 
	if(bl>cl)
		cout<<bl+1;
	else
		cout<<cl+1;
	return 0; 
}

回复

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

正在加载回复...