大佬求调
查看原帖
大佬求调
1264860
yunyi2010楼主2024/10/5 22:30

求助!!调了很久也只有86分

#include<bits/stdc++.h>
using namespace std;
long long n,h[100005],in[100005],ans=1,cnt,vis[100005],pd,cmp,num;
int main()
{
	while(cin>>in[ans])
	{
		ans++;
	}
	reverse(in+1,in+ans);
//	for(int i=1;i<=ans;i++)
//	{
//		cout<<in[i]<<" ";
//	}
//	cout<<endl;
	while(num<ans)
	{
		cnt=0,cmp++;
		memset(h,0,sizeof(h));
		for(int i=1;i<ans;i++)
		{
			if(vis[i]==1)
			{
				continue;
			}
			if(i==1)
			{
				h[++cnt]=in[i];
				continue ;
			}
			if(h[cnt]<=in[i])
			{
				h[++cnt]=in[i];
				continue ;		
			}
			long long p=(upper_bound(h+1,h+cnt+1,in[i])-h);
			h[p]=in[i];
		}
		if(cmp==1)
		{
			cout<<cnt<<endl;
		}
		for(int i=1;i<=cnt;i++)
		{
			vis[h[i]]=1;
		}
		num+=cnt;
	}
	cout<<cmp;
	return 0;
}
2024/10/5 22:30
加载中...