題意:
中文題,不再描述。
分析:參考這篇部落格,寫的非常好,我也是看的的。
個人理解:
我把原文的狀態轉移方程又補充了一下。
為0是因為下乙個狀態不能由當前狀態得到。
然後提取出係數得到矩陣
const matrix p = ;
接下來就是然後建立乙個矩陣乘法函式
matrix multi(const matrix &a, const matrix &b) // 矩陣乘法
}return c;
}
然後是快速冪部分
matrix pow_mod(ll n) // 快速冪運算
return res;
}
最後輸出的時候這幾句是等效的
printf("case %d: %d\n", i, pow_mod(n).m[0][0]);
printf("case %d: %d\n", i, pow_mod(n).m[1][1]);
...
完整**:
#include #include #include using namespace std;
const int mod = 100;
typedef long long ll;
struct matrix;
const matrix e = ;
const matrix p = ;
matrix multi(const matrix &a, const matrix &b) // 矩陣乘法
}return c;
}matrix pow_mod(ll n) // 快速冪運算
return res;
}int main()
puts("");
}return 0;
}
hdu 2065 紅色病毒 問題
複習母函式,發現這道題可以用矩陣快速冪。然後做了一下 母函式 看起來好複雜的樣子 列dp方程,構造矩陣 dp n dp i 0 表示放到了第i位,前i位中有 偶數個a,有 偶數個c dp i 1 表示放到了第i位,前i位中有 奇數個a,有 偶數個c dp i 2 表示放到了第i位,前i位中有 偶數個...
hdu 2065 紅色病毒 問題
problem description 醫學界發現的新病毒因其蔓延速度和internet上傳播的 紅色病毒 不相上下,被稱為 紅色病毒 經研究發現,該病毒及其變種的dna的一條單鏈中,胞嘧啶,腺嘧啶均是成對出現的。現在有一長度為n的字串,滿足一下條件 1 字串僅由a,b,c,d四個字母組成 2 a出...
hdu2065 紅色病毒 問題
思路 先暴力打個表,然後找規律.include includeint main int b 5 4 int64 n,m while scanf d t eof t printf n return 0 description 醫學界發現的新病毒因其蔓延速度和internet上傳播的 紅色病毒 不相上下...