hdu4727搜索+stl。轻微剪枝
真心险啊。。最后3分钟a出来了。。回家再重新提交的时候发现出现re的错误。。换成g++错误消除。。so。。用stl的情况下最好是用g++。。否则你死都不知道是怎么死的。。还好人品。。最后提交的时候是g++。。不然啃爹的罚时类。。还有就是stl中间的vector容器的使用。。这里的题目跟网络赛的还有点不同。。数据大了1。。- -||
#include<iostream>
#include<vector>
using namespace std;
const int maxn=1020;
vector<int>num;
//int num[maxn];//
int t;
int no[maxn];//
int times[maxn];//
int done=0;//
int locate(int number)
{
int i=0;
for(i=0;i<=t-1;i++)
{
if(no[i]==-1)
{
no[i]=number;
return i;
}
if(no[i]==number)
{
return i;
}
}
}
bool dfs()
{
//cout<<done<<endl;
int t_d;
t_d=t-done;
int i;
if(done==t)
{
return 1;
}
int tmp=t_d-5;
for(i=t_d-2;i>=t_d-8;i--)
{
if(i<0)
{
break;
}
if(num[i]==num[t_d-1])
{
int save=num[i];
num.erase(num.begin()+(t_d-1));
num.erase(num.begin()+i);
t_d-=2;
done=done+2;
if(dfs())
{
return 1;
}else
{
num.insert(num.begin()+(t_d-1),save);
num.insert(num.begin()+i,save);
done=done-2;
}
}
}
return 0;
}
int main()
{
/*
int t;
while(cin>>t)
{
vector<int>v;//
v.clear();
int i=0;
int tt=t;
for(i=0;i<=t-1;i++)
{
int num;//
cin>>num;
v.push_back(num);
}
bool tag;
do
{
while(v[t-1]==-1&&t-1>=0)
{
t--;
}
int tmp=t-5;
for(i=t-2;i>=tmp;i--)
{
if(i<0)
{
tag=0;
break;
}
if(v[i]==-1)
{
tmp--;
continue;
}
if(v[t-1]==v[i])
{
v[t-1]=-1;
v[i]=-1;
tag=1;
break;
}
tag=0;
}
}while(tag);
bool no=0;
for(i=0;i<=tt-1;i++)
{
if(v[i]!=-1)
{
no=1;
break;
}
}
if(no)
{
cout<<0<<endl;
}else
{
cout<<1<<endl;
}
}
*/
while(cin>>t)
{
memset(no,-1,sizeof(no));
memset(times,0,sizeof(times));
num.clear();
done=0;
int i=0;
int tt=t;
for(i=0;i<=t-1;i++)
{
int nnn;
cin>>nnn;
num.push_back(nnn);
times[locate(num[i])]++;
}/*
bool isno=0;
for(i=0;i<=t-1;i++)
{
//cout<<times[i]<<endl;
if(times[i]%2)
{
isno=1;
//break;
}
}
if(isno)
{
cout<<0<<endl;
}else*/
{
if(dfs())
{
cout<<1<<endl;
}else
{
cout<<0<<endl;
}
}
}
return 0;
}
本博客(http://www.cnblogs.com/cj695/)未标明转载的内容均为本站原创,非商业用途转载时请署名(77695)并注明来源(http://www.cnblogs.com/cj695/)。商业用途请联系作者(77695) QQ:646710030。作者(77695)保留本博客所有内容的一切权利。
独立博客:http://nfeng.cc/
独立博客:http://nfeng.cc/

浙公网安备 33010602011771号