码迷,mamicode.com
首页 > 其他好文 > 详细

省选模拟20

时间:2020-02-07 22:31:33      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:出现   端点   存在   枚举   连通性   答案   线段树   指针   区间   

A. Ring

  几乎是原题。

  发现对于一个确定的左端点,必然存在一个分界点r,使得所有右端点>r的区间都存在环,其余都不存在。

  考虑这个东西具有单调性,所以用双指针就可以实现这个过程。

  那么剩下的问题就是动态维护图的连通性,使用LCT即可。

B. Exchange

  发现主要的问题在于2操作。

  观察这个东西,可以发现修改的区间长度非常奇怪,都是2的整次幂,那么不难想到使用线段树。

  若将线段树的总长度扩展到2的整次幂,那么每个节点所代表的都是一段长度为2的整次幂的区间,那么对应的交换操作只需要交换线段树上的两个节点就可以了。

C. Match

  神仙题?

  首先把方差的式子换一下,变成了n*平方和-和的平方。

  对于第一部分,直接枚举每种权值出现的次数乘上对应权值的平方即可。

  对于第二部分,将式子展开之后将贡献分为两部分,一种是平方项,另一种不含平方。

  对于平方项,贡献与第一部分相同。

  对于非平方项,可以写成和的平方的形式。注意到这样会算重,因为若两个配对方案含有相同的元素,那么他们之间不可能存在贡献,所以需要减掉。

  注意有些东西会被减两遍,所以要再加回来。

  于是可以暴力的O(n)计算了。 然后展开式子用自然数幂和就可以O(1)得到答案。

  由于展开太麻烦,所以更好的办法是插值或者高斯消元。

省选模拟20

标签:出现   端点   存在   枚举   连通性   答案   线段树   指针   区间   

原文地址:https://www.cnblogs.com/hzoi-cbx/p/12274744.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!