Bzoj4870 SHOI2017 組合數問題

2021-08-01 15:33:26 字數 968 閱讀 1626

題目顯得一臉不可做。

一般的來說,讀題是不會看前面一些沒有什麼太大意義的話的。

確實也如此,譬如題面首句

組合數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通道 分析 若把每乙個原子看作乙個節點,將化學鍵看作一條邊,那麼這個題目要求的 分子的個數 很容易就可以看出是求圖中聯通塊的個數。求聯通塊的個數,可以使用並查集。可如何求出每一步的聯通塊的個數呢?可以知道,當連上一條邊時,若此邊連線的是兩個不同的聯通塊,那麼分子個數就會減一 當刪去一條邊時,若刪...