摘要: 做完这道题,我只想说:爽啊! 这道题的难点在于我们要支持区间赋值、区间翻转、区间最长子序列、区间求和这几种操作。 我们建一棵线段树,维护以下信息:sum区间1的个数max[0/1]区间内0/1最长连续子段lmax[0/1]包含区间左端点最长0/1子段rmax[0/1]包含区间右端点最长0/1子段鉴于 阅读全文
posted @ 2019-05-25 20:11 AD_shl 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 一道线段树区间合并的问题。 我们需要每次用线段树查找是否存在一个连续的为0的且长度不短与x的子序列、查找完成后需要返回这个子序列的左端点,并且将该子序列全部赋值为1,还需要用线段树完成对一个子序列的赋值。 我们在线段树的每一个节点上维护四个量:tag,sum,l,r分别表示该区间的值(0表示全部为0 阅读全文
posted @ 2019-05-25 14:42 AD_shl 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 一道感觉不错的并查集的题目 我们先将每一组矛盾关系按照冲突值从大到小排序,然后顺序扫描一遍,让冲突值大的两个人尽可能不在一个监狱里,如果不能满足,那么答案就是这组关系的矛盾值。如果所有的矛盾都不会发生,那么答案就是0. 之后我们建立并查集,另外定义一个辅助的数组d表示每一个人的一个敌人。我们扫描每一 阅读全文
posted @ 2019-05-25 12:52 AD_shl 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 这是一道用线段树维护区间最大子段和的题目 本题的关键在于如何维护区间最大子段和。对于线段树的每一个节点,我们定义四个域:sum,l,r,maxx分别表示这个区间的和、以这个区间左边为起点的最大子段和是多少、以这个区间右边为起点的最大子段和是多少、这个区间的最大子段和是多少。当我们用这个区间的两个子区 阅读全文
posted @ 2019-05-25 00:19 AD_shl 阅读(474) 评论(0) 推荐(0) 编辑