摘要: 首先考虑无解的情况, 根据purfer序列,当dee[i]=0并且n!=1的时候,必然无解。否则为1. 且sum(dee[i]-1)!=n-2也必然无解。 剩下的使用排列组合即可推出公式。需要注意的是题目虽然说最终答案不会超过1e17,但是中间过程可能超。 由于n<=150, 所以sum最多是148 阅读全文
posted @ 2017-03-13 16:46 free-loop 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 给出了l,r,w。我们就得知了s[r]-s[l-1]=w.也就是说,点l-1和点r的距离为w。 于是可以使用带权并查集,定义dis[i]表示点i到根节点的距离。查询和合并的时候维护一下就OK了。 如果账本有错误,那么这两点的距离一定不等于在并查集上面的距离。 # include <cstdio> # 阅读全文
posted @ 2017-03-13 15:17 free-loop 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 数学归纳法。 dp[i][j]=dp[i][j-1]+dp[i-1][j-1]. # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <vector> # include 阅读全文
posted @ 2017-03-13 14:13 free-loop 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题目要求求出图中的一颗生成树,使得最大的边权最小,且满足一级公路的个数>=k。 考虑二分最大边,问题就变为给出的图的生成树中,是否满足所有的边<=val,且一级公路的个数>=k。 所以我们把边按一级公路权值排序,优先选择能构成生成树的一级公路。这样贪心的构造。 # include <cstdio> 阅读全文
posted @ 2017-03-13 14:04 free-loop 阅读(176) 评论(0) 推荐(0) 编辑