mxqz 查询次数过多
查看原帖
mxqz 查询次数过多
358739
BFSDFS123楼主2022/10/4 22:58

Rt,WA on #20, Hack1,Hack3

求大佬提供一组 Hack 数据 orz

可能肯定又能优化的地方

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
//#define LL_inf 1145141919810
#define ull unsigned long long
#define ll long long
using namespace std;
//#define int long long
int n;
vector<int> ans;
int dfs(vector<int> vc,int num)
{
	if(vc.size()==0) return 0;
//	cout<<"vc:";
//	for(auto i:vc)
//	{
//		cout<<i<<" ";
//	}
//	cout<<","<<num<<endl;
	vector<int> a1,a2;
	int len=vc.size()/2;
	if(len==0) return 0;
	for(int i=0;i<len;i++)
	{
		a1.push_back(vc[i]);
	}
	for(int i=len;i<len+len;i++)
	{
		a2.push_back(vc[i]);
	}
	
	printf("1 %d ",a1.size());
	for(int i=0;i<a1.size();i++)
	{
		printf("%d ",a1[i]);
	}
	printf("%d",a2.size());
	for(int i=0;i<a2.size();i++)
	{
		printf(" %d",a2[i]);
	}
	putchar('\n');
	fflush(stdout);
	char opt;
	cin>>opt;
	if(opt=='>')
	{
		if(vc.size()==2)
		{
			ans.push_back(vc[1]);
			return 1;
		}
		if((vc.size())%2==1)
		{
			a2.push_back(vc[vc.size()-1]);
		}
		int a=dfs(a2,num-1);
		if(a==0)
		{
			a=dfs(a2,num);
		}
		return a;
	}else if(opt=='<'){
		if(vc.size()==2)
		{
			ans.push_back(vc[0]);
			return 1;
		}
		if((vc.size())%2==1)
		{
			a1.push_back(vc[vc.size()-1]);
		}
		int a=dfs(a1,num-1);
		if(a==0)
		{
			dfs(a1,num);
		}
		return a;
	}else{
		if(vc.size()==2 && num<2)
		{
			return 0;
		}
		if(vc.size()==2 && num==2)
		{
			ans.push_back(vc[0]);
			ans.push_back(vc[1]);
			return 2;
		}
		int a=dfs(a1,num-1);
		int b=dfs(a2,num-1);
		if(a==0 && b==0)
		{
			if(num!=0)
			{
				ans.push_back(vc[vc.size()-1]);
			}
		}
	}
}
int main()
{
	scanf("%d",&n);
	vector<int> vc;
	for(int i=1;i<=n;i++) vc.push_back(i);
	dfs(vc,2);
	cout<<2<<" ";
	for(int i=0;i<ans.size();i++)
	{
		printf("%d ",ans[i]);
	}
	fflush(stdout);
	return 0;
}

2022/10/4 22:58
加载中...