Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
请问这个思路有问题么?读入》除末尾零》运算 key[i]表示 状态全0 到 状态第i位为一之前全0的 步数 满足 key[1]=1 key[i]=key[i-1]*2+1 每次搜并且改变直到所有变为0 cnt表示当前序列有1的个数 void deal() { for(int i=1;i<=n;i++) { if(a[i]!=0) { a[i]=0; cnt--; res+=key[i]; if(i==n)return ; if(i==n-1){res+=1;return;} if(cnt>2)//如果剩余序列还有两个以上1 下一位置0 { if(a[i+1]==1) { res+=1; cnt--; a[i+1]=0; } } else if(cnt==2);//剩余序列还有两个1 不改变 else //剩余序列只有一个1(末位) 下一位置1 { res+=1; cnt++; a[i+1]=1; } deal(); return ; } } return ; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator