遞推 Bzoj3612 Heoi2014 平衡

2022-08-05 11:57:14 字數 1538 閱讀 4167

下課了,露露、花花和萱萱在課桌上用正三稜柱教具和尺子擺起了一個“蹺蹺板”。

這個“蹺蹺板”的結構是這樣的:底部是一個側面平行於地平面的正三稜柱教具,

上面 擺著一個尺子,尺子上擺著若干個相同的橡皮。尺子有 2n + 1 條等距的刻度線,

第 n + 1 條 刻度線恰好在尺子的中心,且與正三稜柱的不在課桌上的稜完全重合。

露露發現這個“蹺蹺板”是不平衡的(尺子不平行於地平面)。於是,她又在尺

子上放 了幾個橡皮,並移動了一些橡皮的位置,使得尺子的 2n + 1 條刻度線上都恰

有一塊相同質 量的橡皮。“蹺蹺板”平衡了,露露感到很高興。

花花覺得這樣太沒有意思,於是從尺子上隨意拿走了 k 個橡皮。令她驚訝的事

情發生了: 尺子依然保持著平衡!

萱萱是一個善於思考的孩子,她當然不對尺子依然保持平衡感到吃驚,因為這

只是一個 偶然的事件罷了。令她感興趣的是,花花有多少種拿走 k 個橡皮的方法

,使得尺子依然保 持平衡?

當然,為了簡化問題,她不得不做一些犧牲——假設所有橡皮都是擁有相同質量的

質點。但即使是這樣,她也沒能計算出這個數目。放學後,她把這個問題交給了她

的哥哥/ 姐姐——hibarigasaki 學園學生會會長,也就是你。當然,由於這個問題

的答案也許會過於 龐大,你只需要告訴她答案 mod p 的值。

第一行,一個正整數,表示資料組數 t(萱萱向你詢問的次數)。   

接下來 t 行,每行 3 個正整數 n, k, p。 

共 t 行,每行一個正整數,代表你得出的對應問題的答案。 

10 6 5 10000

4 1 10000

9 6 10000

4 6 10000

5 1 10000

8318 10 9973

9862 9 9973

8234 9 9973

9424 9 9973

9324 9 9973 731

9208

14421

2565

0446

2549

t <= 20,1 <= n <= 10000,1 <= k <= 10,2 <= p <= 10000,且 k <= 2n+1。 

設f[i][j]表示用j個陣列成i,那麼可以由f[i-j][j]+f[i-j][j-1]得到。

轉移後最大元素可能》n,但只可能為n+1,於是直接去掉這個數,減去f[i-n-1][j-1]。

都減一的轉移思路還是蠻好的。

#includeconst

int maxn=1e5+5

;int f[maxn][15

];int

t,n,k,p;

intmain()

int ans=0

;

for(int i=0;i<=k;i++)

for(int j=0;j<=n*k;j++)

printf(

"%d\n

",ans);

}return0;

}

BZOJ3612 Heoi2014 平衡

時間限制 10 sec 記憶體限制 256 mb 提交 376 解決 297 提交 題目描述 下課了,露露 花花和萱萱在課桌上用正三稜柱教具和尺子擺起了一個 蹺蹺板 。 這個 蹺蹺板 的結構是這樣的 底部是一個側面平行於地平面的正三稜柱教具, 上面 擺著一個尺子,尺子上擺著若干個相同的橡皮。尺子有 2...

bzoj3612 平衡 dp

設f i j 為把i拆成j個不重複的 大於0小於等於n的數的方案數 我們考慮一個方案是怎麼來的 初始狀態是f 0 0 1 如果這個方案裡有1,那它是先把原來的狀態的每個數加1 然後再增加一個1 如果這個方案沒有1,那它是把原來的狀態直接每個數加1得來的 就對應了方程 f i j f i j j f ...

HEOI2014 平衡

heoi2014 平衡 轉化為求選擇k個數,和為 n 1 k的方案數 保證,每個數 1 2 n 1 且最多選擇一次。 限制k個很小,所以用整...