n
nn個球,m
mm個盤,盤子不能空,求本質上不相同的方案數
首先深搜
#include
using
namespace std;
int n,m,ans;
inline
void
dfs(
register
int dep,
register
int sy,
register
int last)
//分完了,統計
if(dep
for(
register
int i=last;i<=sy;i++
)dfs
(dep+
1,sy-i,i)
;//繼續分
else
if(sy>=last)
dfs(dep+1,
0,sy)
;//剩下的直接分完
}signed
main()
然後發現規律f[i
][j]
=f[i
−1][
j−1]
+f[i
−j][
j]f[i][j]=f[i-1][j-1]+f[i-j][j]
f[i][j
]=f[
i−1]
[j−1
]+f[
i−j]
[j]
當然,你也可以這樣想:
當前的方案數=少乙個球少乙個盒+少盒子個球盒子數不變的方案數(因為要保證滿足本質上不同,否則的話就是f[i
−1][
j]f[i-1][j]
f[i−1]
[j],就變成楊輝三角了就可以愉快的跑費小了
;//輸出
}
2023年10月30日提高組 T1 A
求樹上聯通快中最大值與最小值之差為k kk的方案數 設最大值與最小值之差為xxx x xx正好為k kk的方案數 x k x leq k x k 的方案數 x x k的方案數 於是我們就可以樹形dpdp dp啦fi fs on 1 f i prod f 1 fi fson 1 include def...
2023年10月31日提高組 T1 A
求n nn的排列了交換為公升序的最小交換次數的期望 兩種思路 暴力打表找規律 動態規劃 第一種只需要打乙個bfs bfsbf s hash hash hash include include define p 10000007 using namespace std int n,ans struct...
2023年10月30日提高組
jzoj 5194 盟主的憂慮 jzoj 5907 輕功 問乙個樹中有多少個連通塊最大最小點權之差等於kkk 也就是 k 的個數 k 1 的 個數 k 的個數 k 1 的個數 k 的個數 k 1 的 個數,那麼就可以列舉點,對於這個點求的是以它為最大點權符合要求的個數,那麼容易得到合法條件a m a...