看看我的(喜
TLE代码:
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1e6+1;
int n,a[maxn],l,r,ans;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for (int i = 1;i <= n;i++)
{
cin>>a[i];
if (a[i])
{
a[i] = a[i-1] + 1;
}
else
{
a[i] = a[i-1] - 1;
}
}
for (int i = 2;i <= n;i++)
{
for (int j = i-ans-2;j >= 0;j -= 2)//唯一修改处
{
if (a[i] - a[j] == 0) ans = i-j;
}
}
cout<<ans;
return 0;
}
AC代码:
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1e6+1;
int n,a[maxn],l,r,ans;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for (int i = 1;i <= n;i++)
{
cin>>a[i];
if (a[i])
{
a[i] = a[i-1] + 1;
}
else
{
a[i] = a[i-1] - 1;
}
}
for (int i = 2;i <= n;i++)
{
for (int j = i % 2;j <= i-ans-2;j += 2)//唯一修改处,从i到0/1变成从0/1到i了
{
if (a[i] - a[j] == 0)
{
ans = i-j;
break;//这里可以省时间
}
}
}
cout<<ans;
return 0;
}