20181016提高测试

吃枣药丸

T1

【正解】秘制组合数

两个性质:

\(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)

代码

(复杂度算错了不要在意)

T2

【错解】

一看就是贪心嘛

开始想的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)

代码

T3

【错解】

树。。。树上乱搞?

先想的和父亲连边跑拓补序,发现不能确定

咦?好像是个主席树

怎么比较啊?放弃

暴力写挂,0pts

【正解】

比较字符串:暴力,二分+哈希

用主席树维护哈希值,左儿子hash相同往右跳,否则往左跳

注意先特判全部相等的情况

复杂度\(O(Nlog^{2}N)\)

好像卡19****17

代码

posted @ 2018-10-16 16:43  lst_mengbier  阅读(162)  评论(0编辑  收藏  举报