![](https://img-blog.csdnimg.cn/8915ef62129d483390dc7ca5b250164d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
寒假集训专题二 树
树形结构
斐林试剂捏
这个作者很懒,什么都没留下…
展开
-
【树形结构】测试题D - A Simple Task
题意 一个长度为n的字符串,有q条查询。 两种操作: 1. i,j,1 把字符串从i到j的部分升序排列 2. i,j,0把字符串从i到j的部分降序排列 求q次查询之后字符串的结果 思路 训练赛的时候这题没想出来怎么写,下来查了查题解。然后分析一波,终于理解了。 就是建立26棵线段树,对应每个字母,负责记录每个字母出现的位置。 每个T内ans记录的就是该字母出现的位置,而cnt统计我们要操作的那部分的那个字母出现了几次, 然后因为要对那个区间更新,所以对这个区间可以先用0覆盖,然后再根据c原创 2022-01-29 15:44:38 · 1084 阅读 · 0 评论 -
【树形结构】训练题N - Ultra-QuickSort
题意 给一个无序的数组,只能交换相邻两个数,变换成从小到大的数列,问最少需要多少次 思路 归并排序求逆序数,好像是一道模板题捏。(结果居然因为数组开小了而RE了一次) 代码 #include<iostream> #include<cmath> #include<stack> #include<map> #include<queue> #include<cstdio> #include<vector> #inclu原创 2022-01-27 23:11:24 · 622 阅读 · 0 评论 -
【树形结构】训练题M - 维护序列
题意 一种序列,三种操作。 1.从t到g 每一个乘c 2.从t到g 每一个加c 3.查询区间和 思路 这一题的变化在于要注意取模。 其次,对于乘和加,需要放置两个标记,下放lazy的时候写成一个pushdown,并且做乘运算的时候,加法lazy也要有相应的改变。还有就是lazy和ans值的改变与传统线段树模板的不同 代码 #include<iostream> #include<cmath> #include<stack> #include<m..原创 2022-01-27 21:38:39 · 556 阅读 · 0 评论 -
【树形结构】训练题E - Can you answer these queries V
题意 同样是求字段最大和 不过要求是i在[x1,y1]之间,j在[x2,y2]之间。 思路 首先是两大类情况讨论 一、y1<x2 二、y1>=x2 其次就是一些缩短时间的方法:快读,规避掉数组读入,使用位运算,在每个函数结束后加上return(日常tle太难受了) 代码 #include<iostream> #include<cmath> #include<stack> #include<map> #include<queu原创 2022-01-26 22:44:03 · 276 阅读 · 0 评论 -
【树形结构】训练题G - Can you answer these queries IV
题意 一个序列,要求完成两种操作 1.要求从x到y开放 2.求和 思路 这题主要的问题才tle风险。首先的话,开方开到1的话后面开放就不变,不用再开了。 但是不知道为什么明明这样操作了但是还是报了tle 最后发现是输入数组的问题,顺便加了快读函数,做了一些相应的优化 代码 #include<iostream> #include<cmath> #include<stack> #include<map> #include<queue>原创 2022-01-26 18:47:02 · 399 阅读 · 0 评论 -
【树形结构】训练题C - Can you answer these queries III
题意 在原来I的基础上 增加了单点更新操作 思路 和原来的A题基本一直,只需要在写一个单点更新的分函数就好了,还是比较裸的板子,除了一开始脑子一抽忘记把结构体的所有值都要更新() 代码 #include<iostream> #include<cmath> #include<stack> #include<map> #include<queue> #include<cstdio> #include<vector>原创 2022-01-25 23:19:31 · 75 阅读 · 0 评论 -
【树形结构】训练题A - Can you answer these queries I
题意 就是要求一个区间的连续的最大字段和 思路 线段树,注意用结构体建树来的会更方便一些 代码 #include<iostream> #include<cmath> #include<stack> #include<map> #include<queue> #include<cstdio> #include<vector> #include<cstring> #include<algorithm原创 2022-01-25 22:52:11 · 53 阅读 · 0 评论 -
【树形结构】训练J - A Simple Problem with Integers
题意 要求完成两个操作 1.C abc 从a到b都加上c 2.Q ab 计算从a到b的和 思路 线段树的基本操作。 注意要使用懒更新:lazy标记的清除和更新 以及树的数组大小要开原始数组的4倍原创 2022-01-25 15:48:13 · 68 阅读 · 0 评论