下課了,露露、花花和萱萱在課桌上用正三稜柱教具和尺子擺起了一個“蹺蹺板”。
這個“蹺蹺板”的結構是這樣的:底部是一個側面平行於地平面的正三稜柱教具,
上面 擺著一個尺子,尺子上擺著若干個相同的橡皮。尺子有 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]。
都減一的轉移思路還是蠻好的。
#includeconstint 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個很小,所以用整...