on the road

扫雷

?sid=250113

第一位是0或者1,,两种情况都试一下(最坏情况下)。

/* hiho1114 * @author:zorroshen */#include <iostream>#include <vector>using namespace std;int n;int array[100001];int res[100001];int check(int i){if (i==0){return res[i]+res[i+1];}if (i==n-1){return res[i-1]+res[i];}return res[i-1]+res[i]+res[i+1];}int main(){for(int i=0;i<=100001;++i) res[i]=0;int times;cin>>times;for(int i=0;i<times;++i){cin>>n;for(int i=0;i<n;++i){cin>>array[i];}for(int i=0;i<=100001;++i) res[i]=0;bool res0_1 = false;res[0]=1;for (int i = 0; i < n-1; ++i){ // cout<<array[i]<<" "<<check(i)<<endl;if (array[i]==check(i)){res[i+1] = 0;continue;}else if(array[i]==check(i)+1){res[i+1] = 1;continue;}else{res0_1 = true;break;}}//cout<<"####"<<array[n-1]<<" "<<check(n-1)<<endl;if(array[n-1]!=check(n-1)) res0_1 = true;if (res0_1){bool res0_0 = false;for(int i=0;i<=100001;++i) res[i]=0;res[0]=0;for (int i = 0; i < n-1; ++i){if (array[i]==check(i)){res[i+1] = 0;}else if(array[i]==check(i)+1){res[i+1] = 1;}else{res0_0 = true;break;}}}//for (int i = 0; i < n; ++i)//{//cout<<res[i]<<" ";//}//cout<<endl;int numOf1 =0,count=0;vector<int> vec0,vec1;for(int k=0;k<n;++k){if(res[k]==0) vec0.push_back(k);else if(res[k]==1) vec1.push_back(k);}cout<<vec1.size()<<" ";for(size_t t =0;t<vec1.size()-1;++t){cout<<vec1[t]+1<<" ";}cout<<vec1[vec1.size()-1]+1<<endl;cout<<vec0.size()<<" ";for(size_t t =0;t<vec0.size()-1;++t){cout<<vec0[t]+1<<" ";}cout<<vec0[vec0.size()-1]+1<<endl;}}

好想从现在开始抱着你,紧紧地抱着你,一直走到上帝面前。

on the road

相关文章:

你感兴趣的文章:

标签云: