TLE80分!大佬求助!
查看原帖
TLE80分!大佬求助!
606191
GeXXGe楼主2023/10/7 21:22

大佬!!帮帮我这个蒟蒻吧!

有一点暴力,但不多,结果T了两个点.....

提交结果

代码:

#include <iostream>
#include <cstdio>
using namespace std;
int c[50020][2];
int g[50020];
int pd(int i)
{
	if(g[i])
	{
		if((i-g[i])%2==0)
		{
			return 0;
		}
	}
	return 1;
}
int main()
{
	int n;
	cin>>n;
	int a,b;
	cin>>a;
	int len=1;
	c[1][1]=1;
	c[1][0]=1;
	for(int i=2;i<=n;i++)
	{
		scanf("%d",&b);
		if(b==a)
		{
			c[len][0]++;
		}
		else
		{
			c[++len][0]++;
			c[len][1]=i;
		}
		a=b;
	}
	int k=n;
	int l=1;
	while(k)
	{
		for(int i=1;i<=len;i++)
		{
			if(c[i][0])
			{
				g[i+1]=i;
			}
			else
			{
				g[i+1]=g[i];
			}
		}
		for(int i=1;i<=len;i++)
		{
			if(c[i][0]&&pd(i))
			{
				c[i][0]--;
				k--;
				printf("%d ",c[i][1]);
				c[i][1]++;
			}
		}
		cout<<endl;
		l++;
	}
	return 0;
}

请问各位大佬while循环中的两个for可以压缩成一个吗?

2023/10/7 21:22
加载中...