随笔分类 -  线段树

摘要:传送门 分析 居然卡哈希数,万恶的出题人...... 感觉我这个方法似乎比较呆,我的代码成功成为了全网最慢的代码qwq 应该是可以直接哈希的 但由于我哈希学的不好又想练练线段树维护哈希,于是就写了个线段树维护了一下哈希值 详见代码 代码 阅读全文
posted @ 2018-11-01 15:20 水题收割者 阅读(208) 评论(0) 推荐(0)
摘要:传送门 分析 我们发现这个四元组可以分解成一个逆序对拼上一个顺序对,这个线段树搞搞然后乘一下就可以求出来了,但是我们发现可能有(a,b)为逆序对且(b,c)为顺序对的情况,所以要进行容斥,我们只需要枚举是哪一个点重合然后减掉即可。 代码 阅读全文
posted @ 2018-10-16 14:48 水题收割者 阅读(170) 评论(0) 推荐(0)
摘要:传送门 分析 二分一个数表示查询位置的数是多少,将序列中大于等于这个数的数赋为1,其余赋为0,对于每一个区间查询区间和(即区间内1的个数),然后区间修改将前/后半部分修改为1,其余修改为0即可 代码 阅读全文
posted @ 2018-10-07 19:16 水题收割者 阅读(185) 评论(0) 推荐(0)
摘要:传送门 分析 用线段树维护区间gcd,每次查询找到第一个不是x倍数的点,如果这之后还有gcd不能被x整除的区间则这个区间不合法 代码 阅读全文
posted @ 2018-10-07 09:11 水题收割者 阅读(286) 评论(0) 推荐(0)
摘要:传送门 (分析见正睿2018.10.1笔记) 代码 阅读全文
posted @ 2018-10-06 21:11 水题收割者 阅读(210) 评论(0) 推荐(0)
摘要:传送门 (分析见正睿2018.10.1笔记) 代码 阅读全文
posted @ 2018-10-04 21:23 水题收割者 阅读(142) 评论(0) 推荐(0)
摘要:传送门 (分析见正睿10.1笔记) 代码 阅读全文
posted @ 2018-10-02 21:26 水题收割者 阅读(140) 评论(0) 推荐(0)
摘要:传送门 分析 我们先二分一下最终的平均值mid,然后让序列中的每一个数都减去这个mid,之后用新序列的前缀和建一棵线段树,枚举起点i,然后求出此时在i+L-1~i+R-1范围内的前缀和的最大值,用这个数减去pre[i],这就是以i为起点的长度为L~R范围内的序列最大值。如果这个值大于0则表示这个mi 阅读全文
posted @ 2018-09-25 15:33 水题收割者 阅读(246) 评论(0) 推荐(0)
摘要:传送门 分析 我们假设如果一个点是0则它的值为-1,如果一个点是1则值为1,则一个区间的答案便是max(pre[i]+sur[i]),这里的pre[i]表示此区间i点和它之前的的前缀的最大值,sur[i]表示i点之后的后缀最大值。所以为了维护每个区间的答案我们可以用线段树进行维护。而对于一个由两个区 阅读全文
posted @ 2018-09-21 21:36 水题收割者 阅读(139) 评论(0) 推荐(0)
摘要:传送门 分析 考试的时候sb了......我们发现可以按照先序遍历将一棵树变成一个序列,而不需要删的数的数量便是最长上升子序列的长度,但是还有一个问题就是如果在5和7之间有3个空的位置就无法填入合法的数,但是按照此方法会将5和7划归为合法的。所以我们考虑将第i个数的权值变为原来的权值减去i,然后求一 阅读全文
posted @ 2018-09-16 22:41 水题收割者 阅读(235) 评论(0) 推荐(0)
摘要:传送门 分析 因为所有数均小于1e9,所以只需要开根几次就会变成1。因此我们只需要维护区间和以及这个区间是否全部小于等于1即可,每一次暴力修改区间内的还不是1或0的数即可。 代码 阅读全文
posted @ 2018-08-25 15:55 水题收割者 阅读(122) 评论(0) 推荐(0)
摘要:传送门 分析 首先我们知道如果在一棵树上加一条边一定会构成一个环,而删掉环上任意一条边都不改变连通性。我们把这一性质扩展到这个题上不难发现如果一条树边不在任意一个新边构成的环里则删掉这条边之后可以删掉任意一条新边,对方案数的贡献是m。而如果它只在一个新边构成的环中则要删除这条边和对应的新边,对方案数 阅读全文
posted @ 2018-08-24 14:05 水题收割者 阅读(486) 评论(0) 推荐(0)
摘要:传送门 分析 我们首先要记录一个pre[x]表示上一个颜色和x相同的位置。然后我们枚举所有区间的右端点。我们发现对于每一个新的端点x,会导致pre[pre[x]]+1到pre[x]这一段区间的值减w[col[x]],导致pre[x]+1到x这一段区间的值加w[col[x]]。所以我们只需要维护这些信 阅读全文
posted @ 2018-08-18 09:37 水题收割者 阅读(126) 评论(0) 推荐(0)
摘要:传送门 题目大意 有一个大区间和n个小区间,每个小区间都有一个代价,求最少付出多少代价可以使得小区间完全覆盖大区间。 分析为了方便起见我们先将s变为2,其它的位置都对应更改以便后期处理。我们考虑以t1为第一关键字,t2为第二关键字将所有奶牛排序。用dp[i][j]表示考虑到第i只牛,覆盖到点j最少需 阅读全文
posted @ 2018-08-14 17:43 水题收割者 阅读(260) 评论(0) 推荐(0)
摘要:传送门 题目大意 给你m个机器,n个数,每个机器可以给n个数的某一段排序,求最少使用几个机器,保证可以把这个n个数排好序 分析 我们可以想到dpij表示考虑前i个机器让最大的数到达点j至少需要使用多少个机器,转移为: dp[i][j]=min{dp[i][j],dp[i-1][j'](s[i]<=j 阅读全文
posted @ 2018-08-13 07:59 水题收割者 阅读(260) 评论(0) 推荐(0)
摘要:传送门 题目 给一个1到N的排列{Ai},询问是否存在1<=p1<p2<p3<p4<p5<…<pLen<=N (Len>=3), 使得Ap1,Ap2,Ap3,…ApLen是一个等差序列。 给一个1到N的排列{Ai},询问是否存在1<=p1<p2<p3<p4<p5<…<pLen<=N (Len>=3) 阅读全文
posted @ 2018-06-18 20:24 水题收割者 阅读(170) 评论(0) 推荐(0)
摘要:传送门 题目 Sasha has an array of integers a1, a2, ..., an. You have to perform m queries. There might be queries of two types: 1 l r x — increase all inte 阅读全文
posted @ 2018-06-18 20:10 水题收割者 阅读(329) 评论(0) 推荐(0)
摘要:传送门 题目 In one well-known algorithm of finding the k-th order statistics we should divide all elements into groups of five consecutive elements and fin 阅读全文
posted @ 2018-06-17 08:20 水题收割者 阅读(412) 评论(0) 推荐(0)
摘要:传送门 题目 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动, 阅读全文
posted @ 2018-06-15 19:40 水题收割者 阅读(188) 评论(0) 推荐(0)
摘要:传送门(洛谷) 传送门(bzoj) 题目 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成。 有长为N的数列,不妨设为a1,a2,…,aN 。有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2)把数列中的一段数全部加一个值; (3)询问数列中的一段数的和,由于答案可能很大, 阅读全文
posted @ 2018-06-05 20:38 水题收割者 阅读(156) 评论(0) 推荐(0)