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/