P3952 时间复杂度18pts求调.
  • 板块题目总版
  • 楼主poor_OIer
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/8/28 22:12
  • 上次更新2024/8/29 10:36:46
查看原帖
P3952 时间复杂度18pts求调.
704634
poor_OIer楼主2024/8/28 22:12

非常奇怪

我下载了#1的数据,本地输出正确的啊。

4
4 O(n^2)
F a 32 n
F b 69 n
E
E
2 O(n^2)
F a 60 n
E
4 O(n^4)
F a 67 n
F b 36 n
E
E
10 O(n^4)
F a 78 81
F b 73 98
F c 7 n
F d 46 n
F e 35 n
E
E
E
E
E
Yes
No
No
No

没有区别啊。

#include<bits/stdc++.h>
using namespace std;
int t,l;
string s;
inline int read()
{
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')
			f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x=(x<<3)+(x<<1)+(ch^48);
		ch=getchar();
	}
	return x*f;
}
void calc()
{
	int sum=0;
	bool flag=0;
	int square=0,sq;
	bool bigger=0;
	map<char,int> mp;
	for(int i=1;i<=l;i++)
	{
		char ch;
		cin>>ch;
		if(ch=='F')
		{
			sum++;
			char name;
			string begin,end;
			cin>>name>>begin>>end;
			//cout<<ch<<' '<<name<<' '<<begin<<' '<<end<<endl;
			if(bigger)
				continue;
			if(mp[name]&&!flag)
			{
				cout<<"ERR"<<endl;
				flag=1;
				continue;
			}
			mp[name]=1;
			if(begin=="n"&&end!="n")
			{
				bigger=1;
				continue;
			}
			if(begin!="n"&&end=="n")
			{
				square++;
				continue;
			}
		}
		else if(ch=='E')
		{
			sum--;
			sq=max(sq,square);
			square=0;
		}
	}
	if(flag)
		return;
	//cout<<square<<' ';
	if(sum)
		cout<<"ERR"<<endl;
	else
	{
		if(s.size()==4)
		{
			if(sq)
			{
				cout<<"No"<<endl;
				return;
			}
			cout<<"Yes"<<endl;
		}
		else
		{
			if(!sq)
			{
				cout<<"No"<<endl;
				return;
			}
			string t=s.substr(4,2);
			if(t[1]>='0'&&t[1]<='9')
			{
				int cnt=(t[0]-'0')*10+(t[1]-'0');
				if(cnt==sq)
					cout<<"Yes"<<endl;
				else
					cout<<"No"<<endl;
			}
			else
			{
				int cnt=t[0]-'0';
				if(cnt==sq)
					cout<<"Yes"<<endl;
				else
					cout<<"No"<<endl;
			}
		}
	}
}
int main()
{
	t=read();
	for(int i=1;i<=t;i++)
	{
		cin>>l>>s;
		calc();
	}
	return 0;
}
2024/8/28 22:12
加载中...