
线段树
hannibal_lecter_
这个作者很懒,什么都没留下…
展开
-
线段树模板
线段树区间更新询问区间和模板int Case = 1, n, m;struct { int l, r; ll lazy, val; int mid(){return(l+r)/2;} int size(){return r-l+1;}}tr[maxn<<2];void pushup(int rt){tr[rt].val = tr[rt<<1].val+tr[...原创 2018-10-07 15:43:44 · 93 阅读 · 0 评论 -
2018上海大都会A Simple Problem with Integers【线段树】
A Simple Problem with Integers如果能发现对每个数多次操作后结果会存在循环节,就可以知道线段树该维护什么了。void init() { for(int i = 1; i < 2018; i++) { int p = i; for(int j = 0; j < 15; j++) { cc[i][j] = p; p = p*p%2018...原创 2019-03-27 20:05:36 · 145 阅读 · 0 评论 -
poj2991【线段树维护向量】
我们知道当第i+1根棍子旋转的时候,i+1~n根棍子都是相对不动的,只是角度变了而已。考虑维护每个区间内线段从起点指向终点的向量投影,那么我们要的答案就是整个区间的向量投影。每次更新的时候只需要更新第i+1与前一个线段的夹角改变了多少,然后区间更新i+1~n的向量,最后别忘把更新的向量pushup上来。#pragma GCC optimize(2)#include&lt;cstdio&g...原创 2019-03-15 11:29:17 · 182 阅读 · 0 评论 -
[SCOI2010]序列操作 线段树
一眼线段树代码题,交上去一直WA,找半天bug原来是区间合并写错了!!#pragma GCC optimize(2)#include&lt;bits/stdc++.h&gt;using namespace std;const int maxn = 1e5+5;struct node{ int l, r; bool set[2], rflag; int sum, ...原创 2019-01-26 21:45:14 · 112 阅读 · 0 评论 -
扫描线模板
#include<bits/stdc++.h>using namespace std;const int maxn = 2005+5;struct node{ double l, r, h; int type; node(){}; node(double l, double r, double h, int type):l(l),r(r), h(h...原创 2019-01-20 00:34:33 · 91 阅读 · 0 评论 -
[线段树]Vasya and a Tree codeforce1076E
题目链接题意:给一颗树,有m次操作,每次操作有v, d, x。代表把所有以v为祖先且距离祖先小于d的节点都加上x。在m次询问后输出n个节点的权值,初始全为零。思路:可以发现对编号为1的节点,他最终的权值为所有对v = 1的操作和。对于他的子节点的答案也有贡献。其实祖先节点的操作对子节点没有影响,只是对其相邻的节点有影响。我们可以从1开始dfs,对每次的操作用线段树单点更新深度对应的权值,线...原创 2018-11-13 22:18:58 · 117 阅读 · 0 评论 -
求区间升序或降序后第K个数
地址(现在qscoj好像挂了)询问只有一次,可以二分答案。对于答案x来说,这个序列只有大于x的和小于等于的。如果第[1, k]上比x小的数小于k则可以l = mid,否则r = mid;#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;using namespace std;const int ...原创 2018-10-07 16:26:32 · 182 阅读 · 0 评论 -
线段树区间合并
区间的数出现次数最多的数地址struct node{ int l, r; int ms, ls, rs; int lval, rval; int mid(){return (l+r)/2;} int soon(){return l == r;} int size() {return (r-l+1);}}tr[maxn<<2];int cc[maxn];void p...原创 2018-10-07 16:04:59 · 187 阅读 · 0 评论 -
线段树维护区间(平方和,立方和)修改区间(加,赋值,乘)
题目地址/** @Author: hannibal* @Date: 2018-08-07 10:42:26* @Last Modified by: hannibal* @Last Modified time: 2018-08-07 17:08:44*/#pragma GCC optimize(2)#include&lt;bits/stdc++.h&gt;using nam...原创 2018-10-07 15:46:54 · 1550 阅读 · 0 评论 -
多校补题2
第6场05 Snowy Smile赛场上队友上来就开这道题敲的特high,敲完后T了好几发,还在说自己复杂度正确。。。最后不T了一直WA。我和另外一个队友在搞02,因为感觉可以可以做,但是整个下午都没怼过,思路也不对。。这道题不是很难,思路是枚举矩形的左下端点和右上端点,用线段树维护矩形内的纵坐标方向的最大子段和,这样就可以在log的复杂度内找到一个矩形的权值最大的"连续纵坐标方向的子矩形...原创 2019-08-08 17:58:44 · 214 阅读 · 0 评论