Codeforces Round #307 (Div. 2) D. GukiZ and Binary Operations (矩阵高速幂)
題目地址:http://codeforces.com/contest/551/problem/D
分析下公式能夠知道,相當(dāng)于每一位上放0或者1使得最后成為0或者1。假設(shè)最后是0的話,那么全部相鄰位一定不能全是1,由于假設(shè)有一對相鄰位全為1,那么這兩個的AND值為1。又由于OR值是僅僅要有1。結(jié)果就為1。所以這位結(jié)果肯定為1。所以就推出了一個dp轉(zhuǎn)移方程。dp[i][j]表示第i位上的數(shù)為j時的總個數(shù)。那么有:
dp[i][0]=dp[i-1][0]+dp[i-1][1];
dp[i][1]=dp[i-1][0];
設(shè)f[i]表示第i位上的總個數(shù),即f[i]=dp[i][0]+dp[i][1].
所以,f[i]=dp[i-1][0]+dp[i-1][1]+dp[i-1][0]
f[i]=f[i-1]+dp[i-1][0]
f[i]=f[i-1]+dp[i-2][0]+dp[i-2][1]
f[i]=f[i-1]+f[i-2]
所以,推到最后可發(fā)現(xiàn)這是一個斐波那契!!
所以用矩陣高速冪求結(jié)果為0時的情況。然后為1的時候就是2^n-(結(jié)果為0的情況值)。
然后由于每一位都是獨立的,所以分別推斷每一位是0還是1,然后乘起來。
代碼例如以下:
轉(zhuǎn)載于:https://www.cnblogs.com/cxchanpin/p/7264107.html
總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #307 (Div. 2) D. GukiZ and Binary Operations (矩阵高速幂)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongodb输错命令后不能删除问题
- 下一篇: Centos 7安装与配置chef