50分求助,大佬帮看看吧!
查看原帖
50分求助,大佬帮看看吧!
475143
gaojian2007楼主2022/8/3 10:23
#include<cstdio>
#include<algorithm>
#include<queue>
#include<iostream>
using namespace std;
int n,a[1000005],t,k;
deque<int>q1,q2;
int dfs(int x,int dp,int pd)
{
	long long int mx=-1,mn=23334567890,q=0;
	if(q1.size()+q2.size()<=1)
	if(pd==1)
	return 1;
	else
	return n-1;
	if(!q1.empty())
	{
		mx=q1.front();
		q=1;
	}
	if(!q2.empty())
	{
		if(mx<=q2.front())
		{
			mx=q2.front();
			q=2;
		}
	}
	if(q==1)
	{
		q1.pop_front();
	}
	if(q==2)
	q2.pop_front();
	q=0;
	if(!q1.empty())
	{
		mn=q1.back();
		q=1;
	}
	if(!q2.empty())
	{
		if(mn>q2.back())
		{
			mn=q2.back();
			q=2;
		}
	}
	if(q==1)
	q1.pop_back();
	if(q==2)
	{
		int w=q2.back();
		q2.pop_back();
		if(w==x)
		{
			if(pd==0)
			{
				q2.push_back(mx-mn);
				return dp+(dfs(mx-mn,dp+1,1)==0)-1;
			}
			else
			{
				q2.push_back(mx-mn);
				return dfs(mx-mn,dp+1,pd)==0;
			}
		}
	}
	q2.push_back(mx-mn);
	if(pd==1)
	return 1; 
	else
	return dfs(mx-mn,dp+1,pd);
}
int main()
{
	freopen("1.in","r",stdin);
	freopen("1.out","w",stdout);
	scanf("%d%d",&t,&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",a+i);
		q1.push_front(a[i]);
	}
	printf("%d\n",n-dfs(-1,0,0)); 
	for(int j=1;j<t;j++)
	{
		scanf("%d",&k);
		q1.clear();
		q2.clear();
		for(int i=1;i<=k;i++)
		{
			int x,y;
			scanf("%d%d",&x,&y);
			a[x]=y;
		}
		for(int i=1;i<=n;i++)
		q1.push_front(a[i]);
		printf("%d\n",n-dfs(-1,0,0));
	}
	return 0;
}
2022/8/3 10:23
加载中...