上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 16 下一页
摘要: 一道线段树区间合并的问题。 我们需要每次用线段树查找是否存在一个连续的为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 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 这道题我采用树状数组求解逆序对一类的思想解决 我们读入数据之后,分析问题,本题求解两个问题:‘^’的数量和‘v’的数量,我们先考虑^ 假设我们令i为^的那个顶点,那么以i为顶点的^的个数就是i左侧高度小于i的高度的个数与右侧高度小于i的数量的乘积,我们只需要枚举i的位置,累加答案即可。 我们如何高效 阅读全文
posted @ 2019-05-24 23:18 AD_shl 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 这道题可以用Splay、fhq-treap解决,但是平衡树解这道题大材小用,所以我采用了对顶堆解决。 考虑建立两个堆:以i为分割点,用大根堆存储前半段序列,用小根堆存储后半段序列。我们控制大根堆的元素个数为i,这样查询时大根堆的堆顶就是排名为i的元素。然后我们考虑维护对顶堆。 对于add操作,我们先 阅读全文
posted @ 2019-05-18 21:35 AD_shl 阅读(210) 评论(0) 推荐(0) 编辑
摘要: “二维”单调栈的题目,一上来有点没有思路,想用dp做一下,然而转念一想,假设我们把这个图按照行进行划分,先处理前1行的最大矩形,在处理前2行的最大矩形,再处理前3行的最大矩形……最后用子问题的答案更新答案即可。这样一来,这个问题就转化成了一个简化版单调栈的题目。 简化版点这里,所以,我们采用这种思路 阅读全文
posted @ 2019-05-18 15:18 AD_shl 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 一道关于单调队列的模板题。 题目要求求一段区间,使得这一段区间的和最大且区间长度不超过m。我们显然想到了先求出这个序列的前缀和sum,这样我们就能用O(1)的时间查询任意一个子序列的和。 现在,我们枚举区间的右端点,对于每一个右端点i,我们要找到一个左端点j,使得sum[j]最小而且i-j≤m. 因 阅读全文
posted @ 2019-05-18 09:42 AD_shl 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 一道鬼畜的题目,洛谷给的标签是紫题,怎么可能是紫题…… 原本我想找出在起点到终点的路径上的割点,但是看到了这良心的数据之后…… 由于数据很小,所以我们枚举中间点,然后进行一遍dfs,判断不经过这个中间点这张图是否联通即可。 这就能过?? 是的……时间复杂度为O(n2) 1 #include <ios 阅读全文
posted @ 2019-05-04 10:39 AD_shl 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 这是tarjan求割点的模板题,在此tarjan算法不在赘述,主要讲一些易错点。 首先这张图不一定是连通图,所以我们不能直接从1开始dfs 注意tarjan算法中的一些细节。 注意输出格式!!! 1 #include <iostream> 2 #include <cstdio> 3 #include 阅读全文
posted @ 2019-05-04 10:10 AD_shl 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 这道题是在基本的tarjan求割点的算法上进一步加深,加上了计数问题。 基本思路是显然的,我们必定要跑一遍tarjan求割点,之后我们就要分类讨论。 若这个点不是割点,那么把他的边去掉之后这个点就与原来的联通块分开了,一共有(n-1)对,因为(x,y),(y,x)算两对,所以答案为n-1<<1 若这 阅读全文
posted @ 2019-05-04 09:45 AD_shl 阅读(114) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 16 下一页