吃枣药丸
【正解】秘制组合数
两个性质:
①(C_{m}^{n}=C_{m}^{m-n})
②(sum _{i=k}^{n} C_{i}^{k}=C_{n+1}^{k+1})
即:杨辉三角第i列是第i-1列的前缀和
凝视着这个性质,傻瓜也得到教训:
(sum _{i=l}^{r} C_{i}^{k}=C_{r+1}^{k+1}-C_{l}^{k+1})
题目要求
(prod sum _{i=l}^{r} C_{i}^{k+i-l})
(=prod sum _{i=l}^{r} C_{i}^{i-(k+i-l)})
(=prod sum _{i=l}^{r} C_{i}^{l-k})
(=prod (C_{r+1}^{l-k+1}-C_{l}^{l-k+1}))
预处理阶乘逆元,O(1)回答
复杂度O(N+M)
(复杂度算错了不要在意)
【错解】
一看就是贪心嘛
开始想的Prim,每个枚举所有边,找没选过的最小的边
然后成功Hack了自己:
5 6
1 2 1
1 3 2
2 3 100
3 4 0
4 5 0
5 3 0
重构重构
发现实际上出口就是父节点,而根节点没有父亲,就随便连一条
而任意点都可以是根,所以是个最小生成环套树
发现可能不连通,受Wuvin神题影响建了个超级源点,跟每个联通块连条边,允许联通块个数个环
没考虑一个联通块多个环的情况 50pts
【正解】
并查集可以带东西啊
记一个type表示i为根的并查集是根还是环套树
在合并时:
①如果都是树,合并后是树
②如果一个树一个环套树,合并后是环套树
③如果两个环套树,不能合并
复杂度O(MlogM)
【错解】
树。。。树上乱搞?
先想的和父亲连边跑拓补序,发现不能确定
咦?好像是个主席树
怎么比较啊?放弃
暴力写挂,0pts
【正解】
比较字符串:暴力,二分+哈希
用主席树维护哈希值,左儿子hash相同往右跳,否则往左跳
注意先特判全部相等的情况
复杂度(O(Nlog^{2}N))
好像卡19****17