【CF1338C】Perfect Triples【位运算】【构造】
傳送門
題意:有一序列SSS由下列方式生成:
TTT組數據,求SSS的第nnn項。
T≤105,n≤1016T\leq 10^5,n\leq10^{16}T≤105,n≤1016
通過觀察樣例和理性猜想,可以假設前4k?14^k-14k?1項恰好填完了1~4k?11\sim4^k-11~4k?1,顯然這是整數個三元組。采用歸納法構造4k~4k+1?14^k\sim 4^{k+1}-14k~4k+1?1
將每個序列中的數按二進制位兩個為一組拆分(以下稱拆成的兩個二進制位為"位"),當前的數(已構造的和此步將構造的)有2(k+1)2(k+1)2(k+1)位
之前填的4k?14^k-14k?1項可以看成最高位為00\texttt{00}00,我們要構造的是最高位為01,10,11\texttt{01,10,11}01,10,11,后面kkk位分別遍歷0~4k?10\sim 4^k-10~4k?1
對于每一個(a,b,c)(a,b,c)(a,b,c)顯然有a<b<ca<b<ca<b<c
構造aaa最高位為01\texttt{01}01,容易得到b,cb,cb,c最高位為10,11\texttt{10,11}10,11。這是最理想的結果,下面將證明這種構造是可行的。
現在已經滿足了a<b<ca<b<ca<b<c,那么a,b,ca,b,ca,b,c的后kkk位是互不影響的。下面討論的都是這后kkk位。
現在考慮如何最小化字典序
對于一個已經確定的aaa,我們都需要找到最小的bbb(廢話)
對于aaa上的每一位,都找到一個最小的對應的bbb的位即可(似乎還是廢話,但似乎就是想不到)
設新構造的三元組為(ai,bi,ci)(0≤i≤2k?1)(a_i,b_i,c_i)(0\leq i\leq2^k-1)(ai?,bi?,ci?)(0≤i≤2k?1)顯然所有的ai=ia_i=iai?=i
根據以上信息可以構造出(a,b,c)(a,b,c)(a,b,c)每一位字典序最小的對照表
盜用官方題解的圖:
隨便推一下就可以了
復雜度O(Tlog?n)O(T\log n)O(Tlogn)
總結
以上是生活随笔為你收集整理的【CF1338C】Perfect Triples【位运算】【构造】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【CF1311E】Construct t
- 下一篇: 【十二省联考2019】异或粽子【01Tr