題目顯得一臉不可做。
一般的來說,讀題是不會看前面一些沒有什麼太大意義的話的。
確實也如此,譬如題面首句
組合數cm想來大家也是知道的n 表示的是從n個互不相同的物品中選出m個的方案數
再觀察前面的式子
可以表示成如下形式 ∑q
modk
=rcq
n∗k
回顧題面首句
(代入?)可以得到講人話的題面,大致如下:
求從n*k個物品中選取模k為r個物品?f
(n,r
) 表示從n個物品選取模k為r個物品的方案數 f(
n,r)
=f(n
−1,r
)+f(
n−1,
(r−1
+k)m
odk)
果斷上矩乘!
後面過程不詳盡寫了
hljs cpp">#include
#include
#include
using
namespace
std;
typedef
long
long ll;
char ch;
int fl;
inline
void read(int &a)
int mods,k,r,i,j;
ll n;
struct matrix
}d,trans,ans;
inline matrix power(matrix a,ll b)
return ans;
}int main()
bzoj4870 Shoi2017 組合數問題
time limit 10 sec memory limit 512 mb submit 747 solved 397 submit status discuss 第一行有四個整數 n,p,k,r,所有整數含義見問題描述。1 n 10 9,0 r k 50,2 p 2 30 1 一行乙個整數代表答案...
bzoj4870 Shoi2017 組合數問題
這個題考慮組合數的實際意義,可以將題意轉化為從 nk 個數裡面選 m 個數 m k r 的方案數 這個可以 dp 求解 設 f i j 表示前 i 個數選出 j 個數 j 是對於 k 取mod後的 的方案數 顯然有 f i j f i 1 j f i 1 j 1 k k 可以發現 i 狀態之和 i ...
Bzoj3562 神器化合物 Shoi 2014
ac通道 分析 若把每乙個原子看作乙個節點,將化學鍵看作一條邊,那麼這個題目要求的 分子的個數 很容易就可以看出是求圖中聯通塊的個數。求聯通塊的個數,可以使用並查集。可如何求出每一步的聯通塊的個數呢?可以知道,當連上一條邊時,若此邊連線的是兩個不同的聯通塊,那麼分子個數就會減一 當刪去一條邊時,若刪...