08-09 NOIP模拟测试15

期望得分:60+100+10

实际得分:60+100+10

终于把自己的期望得分拿满了唔。


A. 建设城市(city)

简化题意:n个桶,m个小球,把所有小球放到桶里,每个桶中的小球个数只能是[1,k]。

很像《那一天我们许下的约定》,那题也需要求类似每次增加[1,m]的答案。

但那题除去不给饼干的天后最多只有n为2000天,$Theta(N^2)$ dp可做。

$dp[i][j]= sumlimits dp[i-1][l]   j-k leq l leq j-1$

之后用组合数求解所有D天。

然而这题的n很大,dp不可做。

于是更加优秀的算法出现了:怎么学也学不会,怎么想也想不到的腊鸡容斥

我们先不管k的上限,先保证n个点都放上至少1个,应用挡板法。

把m个小球线性排布,有m-1个空,因为要分成n个区间,所以有n-1个挡板。所以有 $C_{m-1}^{n-1}$

考虑荣斥掉不合法的。

至少有一个不合法:先从m个中拿出k个,然后把剩下的m-k个分到每个桶里(保证每个桶里至少有1个),还是挡板法。然后再把k个球加进某个桶里,这样就使至少那1个桶不合法。

至少i个同理。然后奇减偶加就可以扣掉所有不合法的。

还有一个一直以来的zz误区。

组合数不一定要用Lucas哇,Lucas只是能帮你在n m很大不可打表而p可做的时候降低打表范围添加logp复杂度的哇。


B. 轰炸行动(bomb)

这题我纠结了好久的直接还是间接连通,两个都想了下,觉得直接的结论太扯了,于是开始打间接。

不难发现是在求最长链,对于scc,直接缩掉记录siz不影响。

然后反图拓扑即可,即只有我更新完全才能够更新别人。

 


C. 石头剪刀布(rps)

原文地址:https://www.cnblogs.com/hzoi-yzh/p/11328567.html