CodeForces - 1152B二进制+思维
生活随笔
收集整理的這篇文章主要介紹了
CodeForces - 1152B二进制+思维
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【題目鏈接】Neko Performs Cat Furrier Transform
【題目分析】要求將一個(gè)數(shù)字變成2n-1,通過(guò)嘗試我們發(fā)現(xiàn)如果將最低位的全零位和對(duì)應(yīng)的全一數(shù)字(例如11000對(duì)應(yīng)的就是111)異或那么數(shù)字就會(huì)變成想要的結(jié)果(11111)
但是如果前面還有0(比如110100)那么過(guò)程應(yīng)該如下:110100^000011變成110111加一后變成111000然后就會(huì)得到結(jié)果,總之我們需要做的就是不斷將末尾的全零變成全1,然后在加一的時(shí)候就會(huì)進(jìn)位將前面的0消滅
為了檢驗(yàn)是否已經(jīng)得到結(jié)果,我們不妨預(yù)處理一個(gè)所有結(jié)果的數(shù)組,然后在數(shù)組中用lower_bound和upper_bound找
尾部的全零位的查找可以借鑒樹(shù)狀數(shù)組中最低位1lowbit(x)=x&(-x),最低位1后面全都是0,因此全零對(duì)應(yīng)的的全一數(shù)字為lowbit(x)-1
總結(jié)
以上是生活随笔為你收集整理的CodeForces - 1152B二进制+思维的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 被催眠的催眠师剧情介绍
- 下一篇: CodeForces 1138B暴力+剪