傳送門
看到這個資料範圍,就知道肯定是要找規律。
如果把集合看成乙個長度為 \(n\) 的 \(01\) 串, \(0\) 表示沒有這個元素, \(1\) 表示有這個元素,
那麼我們可以發現對於題中的約束關係,不同位上的 \(01\) 之間不會互相影響。
那麼我們只需要對於只有一位也就是 \(n = 1\) 的情況計算出方案(記為 \(x\))那麼最後的答案就是 \(x ^ n\) 。
現在考慮如何計算 \(x\) 。
根據題目的限制,不難發現每一行都是乙個全是 \(1\) 的字首,而且第 \(i - 1\) 行的字首要比第 \(i\) 行的不短。
那麼我們設 \(f_\) 表示選到第 \(i\) 行其中第 \(i\) 行選了乙個長度為 \(j\) 的字首的方案。
轉移很簡單:
\[f_ = \sum\limits_^ f_
\]不難發現這個東西和楊輝三角有點像。
因為在楊輝三角中,乙個數等於它右上方那個數往左上方的字首的和。
所以我們可以進一步發現 \(f_ = f_ + f_\)
那麼和楊輝三角類似的,第 \(k\) 行的和也就是 \(\sum_^k f_ = 2^k - 1\)
然後再加上全是零的一種情況總共就是 \(2^k\) 種方案。
綜上所述,最後的答案就是 \(2^\) 。
#include #define rg register
#define int long long
#define file(x) freopen(x".in", "r", stdin), freopen(x".out", "w", stdout)
template < class t > inline void read(t& s)
const int p = 1e9 + 7;
int n, k;
inline int power(int x, int k)
signed main()
BZOJ4475 Jsoi2015 子集選取
1 leq n,k leq 10 9 集合s中每個元素互不影響,不妨依次考慮其中乙個元素在三角形中的出現情況 問題轉化為乙個 0 1 的三角形 用 0 表示選了,1 表示沒選,那麼如果 a 為 1 則 a 左邊和上邊都是 1 考慮 n 比較小的情況,可以dp f i 表示乙個 i i 的三角形的方案...
JSOI2015 染色問題
傳送門 雖然不是第一反應,不過還是想到了要容斥。題意轉化 需要求滿足 n m c 個條件的方案數。然後我們就列舉三個數 i,j,k 表示當前方案中,至少不用 k 種顏色,至少不塗 i 行 至少不塗 j 列。然後直接組合數算 式子不難看懂 最後容斥即可。那麼寫出來就是 ans sum n sum m ...
JSOI2015 最小表示
題目大意 盡可能多地去掉乙個有向無環圖上的邊,使得圖的連通性不變。思路 拓撲排序,然後倒序求出每個結點到出度為 0 的點的距離 d 再倒序遍歷每乙個點 x 以 d 為關鍵字對其出邊降序排序,嘗試加入每一條邊,若加邊之前兩點已經連通,則說明這條邊可以刪去。可以用bitset維護圖的連通性,注意原圖是有...