題意:求長度為1~n的項鍊,用必須用k種珍珠組成的方案數。
思路:首先可以想想dp,可以推出dp方程,用dp[i][j]表示長度為i的項鍊用j種珍珠的方案數。則dp[i][j]=dp[i-1][j]*j+dp[i-1][j-1]*(k-j+1),由於n非常大,因此直接dp是不現實的,因此我們想到了用矩陣乘法加速運算,矩陣a的元素分別是長度為n時用j種的方案數,因此要求的就為a+a^2+a^3……+a^n。可能我構造矩陣的方式有些奇怪?感覺和網上的思路都一樣,但是矩陣構造方式看不懂。。。。
**:
#include #include#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3f
#define inf 0x3fffffffffffffffll
#define eps 1e-9
#define pi acos(-1.0)
#pragma comment(linker, "/stack:102400000,102400000")
using namespace std;
typedef long long ll;
const int maxn=33;
const ll mod=1234567891;
struct matrix
; matrix(int nn)
void init()
return x;
}matrix f(const matrix& a,ll n)
ll solve(ll n,int k)
{ if(n==1) return k;
matrix x(k),y(k);
y.clear();
for(int i=0;i
hrbust2294 修建傳送門
哈理工2016級新生程式設計全國邀請賽b題 n個點1 n,i到i 1的距離為a i 現在可以在兩個點之間建乙個傳送門,則兩點之間距離為0,求建傳送門後1號出發的最遠距離最小是多少?a i 的字首和為s i 假設在a b兩點建立傳送門後,兩點距離為dis i j 對於b固定的情況,最遠距離要麼是s n...
ssl2294 打包 dp練習
description 你現在拿到了許多的禮物,你要把這些禮物放進袋子裡。你只有乙個最多裝下v 體積物品的袋子,你不能全部放進去。你也拿不動那麼重的東西。你估計你能拿的最大重量為 g。現在你了解了每乙個物品的完美值 重量和體積,你當然想讓袋子中裝的物品的完美值總和最大,你又得計畫一下了。input ...
hrbust2294 方方正正
哈理工2016級新生程式設計全國邀請賽c題 乙個r行c列的01矩陣,告訴你每行的和 每列的和,問是否存在這樣的矩陣?首先,行和和列和之和要相等,否則一定是no。然後根據gale ryser定理判斷存在性 求出 r r 1 r 2 r m r i 行和大於等於i的行數 只要 r preceq s 就存...