BZOJ 3823 定情信物

2022-04-29 20:39:12 字數 867 閱讀 2207

定情信物

這題主要考高中物理和數學。

首先定義 \(f[i][j]\) 表示 \(i\) 維超立方體中第 \(j\) 維元素的數量,根據實際意義,我們可以推出遞推式: \(f[i][j]=2\cdot f[i-1][j]+f[i-1][j-1]\) 。

\(i\) 維超立方體是由 \(i\!-\!1\) 維超立方體平移得來的,那麼第 \(j\) 維元素**為原來的第 \(j\) 維元素並複製了乙份,加上原來的第 \(j\!-\!1\) 維元素通過平移而新構成了一部分。——ezio

然後我們考慮其組合意義,發現 \(f[i][j]\) 表示把 \(i\) 個元素分為 \(j\) 份,每份第乙個元素貢獻為 \(1\) ,其它元素貢獻為 \(2\) 。那麼我們就可以定義 \(g[i][j]\) 表示把 \(i\) 個元素分為 \(j\) 份,每個元素貢獻都為 \(2\) ,也就是說 \(g[i][j]=2^i\cdot c_i^j\) ,並且有 \(g[i][j]=2^j\cdot f[i][j]\) ,那麼 \(f[i][j]=2^\cdot c_i^j\) ,然後就能直接算了,注意要用 \(\text\) 。

#include #include #include #include const int maxn=1e7+3;

int n,mod;

int bin[maxn];

int fac[maxn];

int inv[maxn];

inline int pow(int x,int k)

inline int c(int n,int m)

inline int lucas(int n,int m)

int main()

專案38 2 打豆豆

任務和 設計乙個程式,能重複地在顯示下面的資訊 1.吃飯 2.睡覺 3.打豆豆 0.退出 請選擇 0 3 根據使用者輸入的選項,輸出一句提示性的話語 將來會對應實現某個功能 輸入0,則退出。檔名 main.c 完成日期 2015.10.15 問題描述 設計乙個程式,能重複地在顯示下面的資訊 1.吃飯...

382 鍊錶隨機節點

382.鍊錶隨機節點 給定乙個單鏈表,隨機選擇鍊錶的乙個節點,並返回相應的節點值。保證每個節點被選的概率一樣。高階 如果鍊錶十分大且長度未知,如何解決這個問題?你能否使用常數級空間複雜度實現?示例 初始化乙個單鏈表 1,2,3 listnode head new listnode 1 head.ne...

382 鍊錶隨機節點

原理參考 蓄水池抽樣 程式設計珠璣 讀書筆記 思路 以1 m的概率選擇第m個物件 思路 高階 如果鍊錶十分大且長度未知,如何解決這個問題?你能否使用常數級空間複雜度實現?class solution def init self,head listnode self.head head defgetr...