线段树、猫树
lemondinosaur
转圈圈 不停转圈圈 然后摔倒
展开
-
#线段树,猫树#SP1043 GSS1 SP1716 GSS3 SP2916 GSS5
猫树GSS3题目分析代码GSS1题目分析1分析2代码GSS5题目分析代码GSS3题目多次询问区间最大子段和,带单点修改分析用线段树维护区间最大前缀和、区间最大后缀和,区间最大子段和,因为单点修改,所以不难(我也不会区间修改)代码#include <cstdio>struct node{int sum,lmax,rmax,w;}tree[200001];int n,...原创 2019-11-04 19:55:11 · 573 阅读 · 0 评论 -
#树链剖分,线段树#SP6779 GSS7 - Can you answer these queries VII
题目在一棵nnn个节点的树上满足两种操作:把树上一条简单路径展开成一个数列,求这个数列的最大子段和(可以为空)把树上一条简单路径上的点权同时加上一个值分析这道题其实也就是最大子段和的树上版,大同小异,妙不可言特别是求答案的部分,由于是一条链,所以必须用两个东东去分别存储最大前缀和、最大后缀和以及最大子段和,等到最后再合并,还是我太菜了代码#include <cstdi...原创 2019-11-03 19:02:39 · 156 阅读 · 0 评论 -
#主席树,树链剖分#洛谷 3313 旅行
题目分析首先如果没有宗教的限制,那么这道题就是线段树裸题,但是既然有了宗教的限制,那么得开10510^5105个线段树,那显然是不行的,想到了主席树,综合它们的空间,时间复杂度O(mlogn2)O(mlogn^2)O(mlogn2)代码#include <cstdio>#include <cctype>#define rr register#define ...原创 2019-10-29 20:05:01 · 152 阅读 · 0 评论 -
#主席树,二分,树状数组#洛谷 2617 Dynamic Ranking
TLE分块题解题目区间第kkk大支持单点修改分析如果没有修改操作,就真的只是一道主席树裸题,但是加上修改操作,就不得不使用树状数组维护,其实思路比较简单,主要考验码题能力 (在这一点我是最菜的呀)代码#include <cstdio>#include <cctype>#include <algorithm>#define rr regis...原创 2019-10-28 21:49:48 · 110 阅读 · 0 评论 -
#主席树、二分、树状数组#洛谷 3157 JZOJ 2287 动态逆序对
题目分析首先如果不带修改操作那么就是一道主席树题目,但是既然有了修改,那么还必须用上树状数组维护,时间复杂度O(nlog2n)O(nlog^2n)O(nlog2n)代码#include <cstdio>#include <cctype>#include <algorithm>#define rr registerusing namespace...原创 2019-10-28 21:45:35 · 117 阅读 · 0 评论 -
#树链剖分,线段树#洛谷 5127 子异和
题目多组询问,每次把树上的一条简单路径中的点权扔入集合中,求该集合的子异和,子异和定义为所有非空子集的异或和的和,而且需要支持区间异或分析考虑某一位满足异或和为1的子集数,若设异或某一位为kkk为1的数量为hkh_khk,那么结果应为cntk=2n−hk×∑i=1⌊hk2⌋C(n,2i−1)=2n−1cnt_k=2^{n-h_k}\times \sum_{i=1}^{\lfloor\fr...原创 2019-10-25 20:25:07 · 121 阅读 · 0 评论 -
#主席树,二分#洛谷 2839 JZOJ 2902 middle
题目给你一个长度为nnn的序列sss。回答QQQ个这样的询问:sss的左端点在[a∼b][a\sim b][a∼b]之间,右端点在[c∼d][c\sim d][c∼d]之间的子序列中,最大的中位数。其中a<b<c<da<b<c<da<b<c<d。分析代码#include <cstdio>#include <c...原创 2019-10-24 21:32:04 · 172 阅读 · 0 评论 -
#二分,主席树#洛谷 2468 粟粟的书架
题目给出一个矩阵,问一个子矩阵中至少要多少个数才能使和≥h\geq h≥h,多组数据,分成1≤r,c≤200和r=1,1≤c≤5000001\leq r,c\leq 200和r=1,1\leq c\leq 5000001≤r,c≤200和r=1,1≤c≤500000分析这显然是一道以二分为核心的题目,但是这道题目二合一,对于r≠1r\neq 1r=1维护二维前缀大于等于某个值的数量以及...原创 2019-10-24 20:58:53 · 131 阅读 · 0 评论 -
2019_3_2 模拟赛
解题报告JZOJ 猫咪的进化题目分析代码JZOJ GF打Dota题目分析代码JZOJ 网站计划题目分析代码JZOJ 选做作业题目分析代码JZOJ 猫咪的进化题目有nnn个单位时间,可以选择v[i]v[i]v[i]的价值,或v[i]2v[i]^2v[i]2但是下一单位时间不能选择,问获得的最大价值分析分成三种情况,选,选平方和不选,dp即可,但是竟然卡double输入代码#incl...原创 2019-04-07 09:27:28 · 474 阅读 · 0 评论 -
#线段树#洛谷 2574 XOR的艺术
题目给定一串01串,在线询问一段区间1的个数,也可以把一段区间异或1分析本来想着暴力的,结果T掉了,早知道就不相信题解了,没错这道题正解是线段树,但是欲辨已忘言,嗯嗯代码#include <cstdio>#include <cctype>#define rr registerusing namespace std;int n,m,w[600001],l...原创 2019-04-12 21:32:34 · 98 阅读 · 0 评论 -
#线段树,树状数组#洛谷 4879 ycz的妹子
题目分析(线段树)首先,要维护区间颜值和以及区间妹子个数,其实最难的应该是删除,在找的时候运用区间妹子个数,但是好像非正解,因为应该容易被HACK掉代码(线段树)#include <cstdio>#include <cctype>#define rr registerusing namespace std;typedef long long ll;co...原创 2019-05-04 13:19:12 · 239 阅读 · 0 评论 -
2019.06.01 【NOIP提高组】模拟 A 组
解题报告前言JZOJ 6191 Exchange题目分析代码JZOJ 4802 探险计划分析代码JZOJ 4800 周末晚会题目分析代码后续前言这可是六一呀JZOJ 6191 Exchange题目分析首先可以预处理出一个位置的后继,这个可以通过类似于链表的结构实现,接着这就是关键了,这样貌似并没有什么意义,把这些区间按右端点从小到大排序离线询问,那只要预处理一个点的后继能散播到最...原创 2019-06-05 20:21:09 · 394 阅读 · 0 评论 -
#线段树#洛谷 5105 不强制在线的动态快速排序
题目链接分析这道题用权值线段树做,记录存在的最左边的数,最右边的数,对于连续的一段区间是可以打表找到答案的,如果不连续按照题目求,对于重复的区间,需要打标记,表示已经计算过了,就不需要再计算了代码#include <cstdio>#include <cctype>#define rr registerusing namespace std;const i...原创 2019-06-01 09:09:41 · 147 阅读 · 0 评论 -
2019.07.12【NOIP提高组】模拟 A 组
解题报告JZOJ 3360 BZOJ 3757 苹果树分析代码JZOJ 3397 洛谷 4556 雨天的尾巴分析代码JZOJ 3360 BZOJ 3757 苹果树题目分析树上莫队解决此题代码#include <cstdio>#include <cctype>#include <cmath>#include <algorithm>...原创 2019-07-13 15:58:25 · 227 阅读 · 0 评论 -
2019.07.09【NOIP提高组】模拟 A 组
解题报告JZOJ 3337 wyl8899的TLE题目分析代码JZOJ 3338 法法塔的奖励题目分析代码JZOJ 3339 wyl8899和法法塔的游戏题目分析代码JZOJ 3337 wyl8899的TLE题目可以最多修改字符串AAA的一个字母,若AAA长度为kkk的前缀是BBB的子串,问kkk的最大值分析枚举公共子串在BBB中的起始位置,二分在完全相同的情况下最长能延长到哪里,因为...原创 2019-07-09 22:27:39 · 326 阅读 · 0 评论 -
2019.05.04 【NOIP提高组】模拟 A 组
解题报告JZOJ 4637 大鱼海棠题目分析JZOJ 4638 第三条跑道题目分析代码JZOJ 4639 Angel Beats!题目分析代码后续JZOJ 4637 大鱼海棠题目有一棵根节点是1的树,选择一个点,使这个点到根节点的路径不能选择,所有点不能选择为输,问先手是否必胜分析如果后手能选到后手必胜的点,先手第一步就能选到,所以除非只有一个点,否则先手必胜JZOJ 4638 第...原创 2019-07-05 07:47:07 · 131 阅读 · 0 评论 -
2019.07.10【NOIP提高组】模拟 A 组
解题报告BZOJ 3257 JZOJ 3347 树的难题分析代码BZOJ 3258 JZOJ 3348 秘密任务分析代码JZOJ 3379 查询题目分析代码BZOJ 3257 JZOJ 3347 树的难题题目分析树形dp,设dp[x][i][j]dp[x][i][j]dp[x][i][j]表示第xxx个点,有无黑点,白点个数为jjj,若j≥2j\geq 2j≥2视作2的最小代价那么dp...原创 2019-07-11 15:10:33 · 287 阅读 · 0 评论 -
2019.07.11【NOIP提高组】模拟 A 组
JZOJ 3326 矮人排队题目交换两个位置上的数,或者查询权值区间[l∼r][l\sim r][l∼r]是否连续分析用权值线段树,维护区间最大值和区间最小值的位置,判断是否连续代码#include <cstdio>#include <cctype>#include <cstring>#define rr register#define ...原创 2019-07-11 21:53:19 · 128 阅读 · 0 评论 -
2019.07.06【NOIP提高组】模拟 A 组
解题报告JZOJ 2679 跨时代题目分析代码洛谷 2579 JZOJ 2288 沼泽鳄鱼分析代码JZOJ 1214 洛谷 4130 项链工厂分析代码后续JZOJ 2679 跨时代题目用nnn根栏杆的其中若干根,使其围成的矩形面积最大分析这道题首先用深搜求出二进制状态能围成的边长,然后用背包,把冗余的栏杆放入背包中,但不改变边长,只是为了装完所有栏杆,最后把nnn根栏杆分成两部分求出最...原创 2019-07-07 15:30:42 · 266 阅读 · 0 评论 -
2019.08.07【NOIP提高组】模拟 A 组
解题报告JZOJ 6275 小L的数列题目分析代码JZOJ 6274 梦境题目分析代码JZOJ 6276 树 JZOJ 100019 A题目分析代码JZOJ 6275 小L的数列题目分析用矩阵乘法递推f1∼fkf1\sim fkf1∼fk的系数,就AC了,时间复杂度O(k3logn)O(k^3log n)O(k3logn)代码#include <cstdio>#in...原创 2019-08-07 22:02:47 · 323 阅读 · 0 评论 -
#zkw线段树,二分,动态规划#洛谷 2605 JZOJ 1587 基站选址
题目分析首先我们在最后加上一个无限远的虚拟村庄,以避免最后一个村庄没有被考虑,接着设f[i][j]f[i][j]f[i][j]表示前iii个村庄安放jjj个基站,其中第iii个村庄安放一个基站的最少费用显然状态转移方程为f[i][j]=min{f[k][j−1]+cost[k][j]}+c[i]f[i][j]=min\{f[k][j-1]+cost[k][j]\}+c[i]f[i][j]...原创 2019-08-08 08:31:23 · 179 阅读 · 0 评论 -
2019.08.12【NOIP提高组】模拟 A 组
解题报告JZOJ 6293 迷宫题目分析代码JZOJ 6297 猛汉王题目分析代码JZOJ 6299 工厂题目分析代码JZOJ 6293 迷宫题目分析因为其没有后效性动态dp,用线段树维护区间的最短路径,线段树维护一个dp方程,也就是该列的某行到某行的最短路径,那么区间判断最小值,注意特判代码#include <cstdio>#include <cctype...原创 2019-08-19 11:16:41 · 698 阅读 · 0 评论 -
#树链剖分,线段树#洛谷 4315 月下毛景树
代码#include <cstdio>#include <cctype>#define rr registerusing namespace std;const int N=100101; struct node{int y,w,next;}e[N<<1];int w[N<<2],lazy[N<<2],lyza[N<&l...原创 2019-08-23 22:11:44 · 148 阅读 · 0 评论 -
2018年11月2日 提高组&2018.08.18【2018提高组】模拟A组
解题报告前言JZOJ 5829 string题目分析代码JZOJ 5830 water题目分析代码JZOJ 5831 number题目分析代码前言咕咕了快一年了呀JZOJ 5829 string题目给定一个由小写字母组成的字符串sss。有mmm次操作,每次操作给定3个参数l,r,xl,r,xl,r,x。如果x=1x=1x=1,将s[l]∼s[r]s[l]\sim s[r]s[l]∼s[...原创 2019-08-11 21:14:48 · 400 阅读 · 0 评论 -
线段树 2018.5.9
前言虽然这不是我第一次做线段树,但是……SSL 2644 练习题一题目桌子上零散地放着若干个盒子,桌子的后方是一堵墙。现在从桌子的前方射来一束平行光,把盒子的影子投射到了墙上。问影子的总宽度是多少。分析这道题首先会想到离散,但是(n&amp;lt;=100000)无能为力,所以使用线段树。代码#include &amp;lt;cstdio&a原创 2018-05-09 16:24:02 · 110 阅读 · 0 评论 -
#树状数组,线段树,分块#poj 3468 A Simple Problem with Integers
题目需要满足两种操作,区间修改和区间查询分析(树状数组)设tree[i]=a[i]−a[i−1]tree[i]=a[i]−a[i−1]tree[i]=a[i]-a[i-1](差分),那么容易得到: tree[1]+tree[2]+…+tree[i]=a[i]tree[1]+tree[2]+…+tree[i]=a[i]tree[1]+tree[2]+…+tree[i]=a[i]...原创 2018-08-21 12:27:40 · 160 阅读 · 0 评论 -
#线段树#洛谷 SP1716 CH 4301 Can you answer on these queries III
题目单点修改+区间查找最大连续子段和分析这道题可以用线段树解决, 维护四个数,总和,左边的最大值,右边的最大值及答案 tree[k].sum=tree[k<<1].sum+tree[k<<1|1].sum;//显而易见,左边+右边 tree[k].lmax=max(tree[k<<1].lmax,tree[k<<...原创 2018-08-21 15:34:44 · 221 阅读 · 0 评论 -
#线段树,懒标记#poj 2777 Count Color
题目求区间内有多少种不同的颜色。分析线段树,做来做去发现还要用懒标记,标记是否为旧的涂色。代码#include <cstdio>#include <cctype>using namespace std;int w[400001],l,t,m,ans,now;bool blag[400001],flag[41];int in(){...原创 2018-06-21 20:33:31 · 242 阅读 · 0 评论 -
#线段树,懒标记#洛谷 3373【模板】线段树 2
题目已知一个数列,你需要进行下面三种操作:1.将某区间每一个数乘上xxx2.将某区间每一个数加上xxx3.求出某区间每一个数的和分析那么这道题有些颠覆了我对懒标记的认识,首先加和乘混在一起肯定要注意次序,那我们就以先加再乘为例,原a1,a2,a3,…,ana_1,a_2,a_3,\dots,a_na1,a2,a3,…,an变为a1+t,a2+t,a3+t,…,an+ta_1+...原创 2019-01-22 21:04:01 · 162 阅读 · 0 评论 -
#线段树,ST表#洛谷 1198 JZOJ 1714 最大数
题目用一种数据结构满足末尾区间查询和单点修改分析那么这些线段树可以实现,但是这里讲ST表的方法,因为只是在末尾单点修改,所以说对原来的ST表是不受影响的,所以说ST表是一种码量比较小的数据结构,但是常数比线段树大了几倍代码(jzoj要开long long)#include <cstdio>#include <cmath>#include <cctyp...原创 2019-01-24 07:36:41 · 224 阅读 · 0 评论 -
#线段树,懒标记#JZOJ 4231 寻找神格 洛谷 2122 还教室 洛谷 1471 方差
题目满足区间查找和区间维护方差分析看到这两个操作,我第一时间想到了线段树,但是貌似常数有点大,于是我又尝(zuo)试(si)打zkw线段树,改了一天也没改出来,第二天又改回线段树,结果WA50分,晚上又尝(zuo)试(si)用树状数组,然后就一脸懵逼,最后只好找回老本,线段树,发现没开long long,然后就在今晚9点多改A了,讲一下主要的思路首先方差公式1r−l+1∑i=lr(a[i...原创 2019-01-25 07:49:05 · 216 阅读 · 0 评论 -
2018.07.12【2018提高组】模拟C组
前言:OTL(again)JZOJ 4272 序章-弗兰德的秘密题目求两棵树的最大同构(自(tai)行(cao)百(shuai)科(le))分析树形dp,f[i][j]f[i][j]f[i][j]表示第1棵树的用iii当根节点和第2棵树的用jjj当根节点的最大同构 可得f[i][j]=max(f[i.son][j.son]+1)f[i][j]=max(f[...原创 2018-07-12 22:30:42 · 180 阅读 · 0 评论 -
#线段树#zoj 1610 Count the color
题目用颜料覆盖一条线中的区间,输出能看到的颜色的个数。分析用线段树,统计时需要判重。代码#include<cstdio>#include<cstring>using namespace std;int flag[30001],cover[30001];int n,ll,rr,cl,color;void inse(int k,int ...原创 2018-05-10 16:49:49 · 128 阅读 · 0 评论 -
#线段树#POJ 3368 Frequent values
题目求不下降序列的某个区间中出现次数最多的数。分析明显的线段树。 用left表示左边的连续个数,right表示右边的连续个数,w表示最长的连续个数。 如果左边的所有数都等于右边最左的数或如果右边的所有数都等于左边最右的数则: tree[k].right=tree[k∗2].right+tree[k∗2+1].lefttree[k].right=tree[k∗2].rig...原创 2018-05-17 16:55:23 · 179 阅读 · 0 评论 -
#线段树,懒标记#JZOJ 1960 最大值2
其实和最大值差不多 就是需要用懒标记虽然不配图,但是有代码。#pragma GCC optimize(2)#include &lt;cstdio&gt;#include &lt;cctype&gt;#include &lt;climits&gt;#include &lt;algorithm&gt;using namespace原创 2018-03-03 00:03:25 · 159 阅读 · 0 评论 -
#树状数组,线段树#洛谷 3372 【模(mú)板】线段树 1
首先先讲树状数组的做法,别问我为什么!同3368一样用差分数组。使差分数组1到x的和为ans(x)。 建立一个新的树状数组ans1(x)=差分(x)*(x-1) 不过那也就是x——y的答案为 (y*ans(y)-(x-1)*ans1(x-1))-(ans(y)-ans1(x-1))树状数组代码#include &lt;cstdio&gt;#include &lt;c...原创 2018-03-02 23:29:43 · 419 阅读 · 0 评论 -
#树状数组,线段树#洛谷 3374 【模(mú)板】树状数组 1
模板,我就不多说了。分析:为了优化时间,于是使用树状数组(长得很像数组的树)。代码:#include &lt;cstdio&gt;#include &lt;cctype&gt;using namespace std;int a[500001],n,m;int in(){ char c=getchar(); int ans=0,f=1; w原创 2018-02-24 12:54:10 · 555 阅读 · 0 评论 -
#dijkstra+zkw线段树#洛谷 4779 洛谷 1339 【模板】单源最短路径(标准版)热浪
分析首先为什么要说这种方法呢,因为根据模板,zkw线段树优化比STL堆快了一倍,所以说在此推荐我的热浪题解代码#include <cstdio>#include <cctype>#include <algorithm>#define rr registerusing namespace std;const int inf=1e9+7;stru...原创 2018-11-28 17:47:23 · 279 阅读 · 0 评论 -
2018_9_23 模拟赛
今日比赛前言:JZOJ 5775 农夫约的假期题目分析代码JZOJ 5776 小x游世界树题目分析代码前言:感觉自己越来越渺小了JZOJ 5775 农夫约的假期题目在一个平面,有nnn个点,找出一个点使nnn个点到该点的曼哈顿距离(∑abs(xi−xj)+abs(yi+yj))(\sum abs(x_i-x_j)+abs(y_i+y_j))(∑abs(xi−xj)+abs(yi+...原创 2018-09-23 14:20:49 · 521 阅读 · 0 评论 -
2018_10_20 模拟赛
解题报告前言JZOJ 5456 奇怪的队列题目分析代码JZOJ 5458 质数题目分析代码JZOJ 5462 好文章题目分析代码前言OTL×∞\times ∞×∞JZOJ 5456 奇怪的队列题目有nnn个人排队,身高为aia_iai的人要么左边由bib_ibi个比她高的人,要么右边由bib_ibi比她高的人,问身高字典序最小的情况分析然而朴素就是n!×n2n!\times...原创 2018-10-20 17:17:26 · 573 阅读 · 0 评论