随笔分类 - 线段树
摘要:题意 给出一个有根树(根是1),有n个结点。初始的时候每个结点的值都是0.下面有q个操作,操作有两种,操作1.将深度为L的点的值全部增加X。操作2.查询以x为根的子树的结点值得和。 其中N,Q<=1e5 分析 一看这种没有办法直接用数据结构解决得问题就要考虑分块。这个题其实也不算是分块,应该是用了分
        阅读全文
                
摘要:题目 度度熊的字符串课堂开始了!要以像度度熊一样的天才为目标,努力奋斗哦! 为了检验你是否具备不听课的资质,度度熊准备了一个只包含大写英文字母的字符串 A[1,n]=a1a2⋯anA[1,n] = a_1 a_2 \cdots a_nA[1,n]=a1a2⋯an,接下来他会向你提出
        阅读全文
                
摘要:题意 有n条线段,且都平行于坐标轴。对于每条线段,给出两个端点的坐标。问一共有多少个线段的交点。 分析 最最简单的扫描法了。用线段树或者树状数组都可以。 由题目可知,线段只有两种,要么平行于x轴要么平行于y轴。而交点只能是两个不平行的线段产生的。 所有我们以一条平行于x轴的线为扫描线,从下向上扫。先
        阅读全文
                
摘要:题意 给出n个矩形的左下角和右上角的坐标,计算总的面积(相交部分只算一次)。 分析 线段树扫描线的模板题。 将每个矩形都拆成上下两条线段,然后从下网上扫,当遇到底边时就加上这个区间,遇到顶边时,就减去这个区间。这些都很好理解,但是有一个点我感觉很难受!对于普通线段树,先将区间[1,2]+1,再更新区
        阅读全文
                
摘要:题意 模拟栈操作。有三种操作push,pop,peak分别代表从栈顶压入元素,删除栈顶元素,查询栈顶元素。但是,每个操作会给出一个时间戳,要求操作必须要按照时间戳来进行。但是对于每个peak必须马上给出查询结果。其中n<=50000,xi,ti<=1e9 分析 讲真,这种题必须结合样例才能明白让干嘛
        阅读全文
                
摘要:题意 有n个村庄排成一排,有n-1条路将他们连在一起。每条路开放一天都会花费一定数量的钱。你可以选择打开或者关上任意条路在任意一天,但是每条路只能打开和关闭一次。我们知道m天的运输计划。每天都有一辆马车从村庄ai到存在bi。你需要保证从ai到bi的路在第i天全部打开。如果要使花费最少,每天的花费应该
        阅读全文
                
摘要:题意 有一颗有n个节点的有根树,根节点编号时1,每个结点都有一个值ai,开始的时候,所有节点的值都是0. 我们有q个操作,操作只有两种类型 1 v x k,a[v]+=x,a[v']+=x-k,a[v"]+=x-2*k... v'是结点v的孩子 。 2 v 输出a[v]mod 1e9+7。 分析 d
        阅读全文
                
摘要:题意 有n只猴子排成一排,一共有m个笑话。开始时,这些猴子都坐在椅子上。下面m行给出的每个笑话包含三个整数x,l,k。代表猴子x讲了笑话l,所以距离x小于等于k的猴子如果他们从没听过这个笑话,他们会掉下椅子,如果听过这个笑话他们会爬回椅子上。问在讲完m个笑话以后,还有哪些猴子是还坐在椅子上的。 分析
        阅读全文
                
摘要:单点修改 1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 const int INF=2147000000; 7 const 
        阅读全文
                
摘要:题意:给一个字符串和m个操作,每次给出l,r,c,把字符串中l-r这段区间的字符为c的字符删掉,求最后的字符串。(n,m<=2e5)线段树。注意这个区间修改和普通区间修改的区别。 他们都是用树状数组做的哎,可是我对树状数组一直是一脸懵逼 1 #include <cstdio> 2 #include 
        阅读全文
                
 

 浙公网安备 33010602011771号
浙公网安备 33010602011771号