沉默是金 矩阵快速幂
沉默是金
時(shí)間限制:?1 Sec??內(nèi)存限制:?128 MB
題目描述
終于活成了自己最討厭的模樣。
小希遇到了一個(gè)序列,他現(xiàn)在可以在序列中可以有重復(fù)地取k個(gè)數(shù)組成一個(gè)新的序列。該序列有以下幾個(gè)性質(zhì):
1、長(zhǎng)度為k;
2、序列中的數(shù)字滿足相鄰兩個(gè)數(shù)字異或后的二進(jìn)制數(shù)字中1的個(gè)數(shù)是3的倍數(shù)。
一共有多少個(gè)滿足條件的序列?
輸入
有多組測(cè)試樣例。
第一行兩個(gè)數(shù)n,k代表給定序列的長(zhǎng)度和待取序列的長(zhǎng)度。
接下來(lái)一行n個(gè)數(shù)字,代表給定序列。
輸出
每個(gè)答案一行,輸出滿足條件的序列的個(gè)數(shù)。答案模1000000007
樣例輸入
5 2 15 1 2 4 8 10 1 44 65 23 44 100 19 19 23 19 40 10 2 93 93 85 48 44 98 93 100 98 98 10 100 22 0 41 63 22 41 17 22 15 42 10 1000000000 454240622 216977025 454240622 509843007 509843007 26552516 488949284 708817573 453191950 447767457樣例輸出
13 10 52 205668186 108319885題意:
給定序列,從序列中選擇k(1≤k≤1e18)個(gè)數(shù)(可以重復(fù)選擇),使得得到的排列滿足xi與xi+1異或的二進(jìn)制表示中1的個(gè)數(shù)是3的倍數(shù)。問(wèn)長(zhǎng)度為k的滿足條件的 序列有多少種?
分析:
首先每個(gè)元素自己構(gòu)成一個(gè)長(zhǎng)度為1的滿足條件的序列。?
其次我們可以預(yù)處理出滿足條件的vi,vj,就可以得到一個(gè)橫縱為n的01矩陣。此時(shí)我們得到了以vi開(kāi)頭,vj結(jié)尾的長(zhǎng)度為2的序列個(gè)數(shù)。?
接下來(lái)我們發(fā)現(xiàn),兩個(gè)矩陣相乘,矩陣c為新得到的矩陣,此時(shí)矩陣a=b,c[i][j]=a[i][1]?b[1][j]+a[i][2]?b[2][j]+...+a[i][n]?b[n][j],我們得到的即為以ai開(kāi)頭,aj結(jié)尾的長(zhǎng)度為3的序列個(gè)數(shù)!?
接下來(lái)用矩陣c更新矩陣a,再與最初的01矩陣,即b相乘,得到的又為開(kāi)頭元素為ai,結(jié)尾元素為aj的長(zhǎng)度為4的序列個(gè)數(shù)!?
依次乘k?1次即得到結(jié)果,這部分可以用矩陣快速冪進(jìn)行優(yōu)化。?
?
?
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的沉默是金 矩阵快速幂的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HDU5726 线段树求解区间GCD
- 下一篇: 史前文明 组合数学