#include<bits/stdc++.h>
using namespace std;
#define int long long
void read(int &n)
{
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*10+ch-'0',ch=getchar();
n=x*F;
}
//inline int read2()
//{
// 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*10+ch-'0',ch=getchar();
// return x*F;
//}
void write(int x)
{
if(x<0)
putchar('-'),x=-x;
if(x>9)
write(x/10);
putchar(x%10+'0');
return;
}
//struct Node{
// int u,v,w;
//};
//Node H[32];
struct Node{
vector<int> U,V,W;
};
//vector<int> u,v,w;
int su=0x7FFFFFFF;
map<Node,bool> vis;
void H(int n,int s,Node N){
if(N.W.size()==3)
{
su=min(su,s);
return;
}
if(N.U.size()&&(N.V.empty() or N.U.front()<N.V.front()))
{
N.V.insert(N.V.begin(),N.U.front());
N.U.erase(N.U.begin());
if(vis.find(N)==vis.end() or vis[N]==0)
{
vis[N]=1;
H(n,s+1,N);
vis[N]=0;
}
N.U.insert(N.U.begin(),N.V.front());
N.V.erase(N.V.begin());
}
if(N.V.size()&&(N.W.empty() or N.V.front()<N.W.front()))
{
N.W.insert(N.W.begin(),N.V.front());
N.V.erase(N.V.begin());
if(vis.find(N)==vis.end() or vis[N]==0)
{
vis[N]=1;
H(n,s+1,N);
vis[N]=0;
}
N.V.insert(N.V.begin(),N.W.front());
N.W.erase(N.W.begin());
}
if(N.W.size()&&(N.U.empty() or N.W.front()<N.U.front()))
{
N.U.insert(N.U.begin(),N.W.front());
N.W.erase(N.U.begin());
if(vis.find(N)==vis.end() or vis[N]==0)
{
vis[N]=1;
H(n,s+1,N);
vis[N]=0;
}
N.W.insert(N.W.begin(),N.U.front());
N.U.erase(N.U.begin());
}
}
signed main(){
int n;
read(n);
vector<int> u,v,w;
for(int i=1; i<=n; ++i)
{
u.push_back(i);
}
Node node;
node.U=u;
node.V=v;
node.W=w;
H(n,0,node);
write(su);
return 0;
}
这段程序看似没有问题,但是。。
请问这个莫名出现的 stl_function
是什么
(不是任何题目