自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 收藏
  • 关注

原创 BSGS复习

前置知识 了解模运算 内容 BSGS初步 首先看一种最简单的问题:对给定的a,p,ba,p,ba,p,b,求最小的x满足 ax≡b(mod  p)a^{x}\equiv b (\mod p )ax≡b(modp) 其中(a,p)=1(a,p)=1(a,p)=1 这道题就比较水了,首先把x化为x=Ap−Bx=A\sqrt p-Bx=Ap​−B的形式,满足1⩽A,B⩽p1\leqslant A,B\leqslant\sqrt p1⩽A,B⩽p​ 这样原式就可以化成:aAp≡baB(mod  p)a^{A\sqr

2020-12-15 16:29:05 14

原创 拉格朗日插值 学习

前置知识 1 + 1 == 2 内容 拉格朗日插值是用来解决对于给定的n+1个点值,确定一个函数f(),使其能够经过这n+1个点,且f()是n次多项式,同时,对于一个给定的点x,它可以快速求出f(x)的值,即使x很大 做法: 使用公式: 以上为普通拉格朗日插值 重心拉格朗日插值: 这种插值主要用来解决动态加点的问题,其实考虑优化上面这个式子 令 w=∏i=0nk−x[i]w = \prod_{i=0}^{n} k - x[i]w=∏i=0n​k−x[i] , 同时pi=∏j=1j!=ix[i]−x[j]p

2020-12-10 23:21:47 35 1

原创 Greedy Shopping (Codeforces)

题目 You are given an arraya1,a2,…,ana1,a2,…,anof integers. This array isnon-increasing. Let's consider a line withnnshops. The shops are numbered with integers from11tonnfrom left to right. The cost of a meal in theii-th shop is equal toaiai. ...

2020-11-19 21:27:15 70 1

原创 线段树优化建图

前置知识 1.线段树 2.了解什么是图 3.了解什么是树 内容 在某些奇奇怪怪的题目中,会有一个区间中的每个点向另一个区间中的每个点连边,如果暴力搞就是很慢的,但是由于是区间问题,考虑可不可以用数据结构维护一下 那么就有线段树优化建图了,可以维护两个线段树A,B,分别记录连向这个区间的边与从这个区间向外连的边,也就是入树与出树,然后线段树的入树的每个点向其出树的对应点连边,边权设为0,表示进入这颗子树后就可以访问这颗子树所连的那些点了。同时A树的父亲向儿子连边,B树的儿子向父亲连边,这样初始化就

2020-11-17 23:33:41 87 1

原创 倍增Floyd

前置知识 1.Floyd 2.倍增 一种技巧 例题 例1:负环(BZOJ4773) 题目描述 在忘记考虑负环之后,黎瑟的算法又出错了。对于边带权的有向图 G = (V, E),请找出一个点数最小的环,使得 环上的边权和为负数。保证图中不包含重边和自环。 输入 第1两个整数n, m,表示图的点数和边数。 接下来的m行,每<=三个整数ui, vi, wi,表<=有一条从ui到vi,权值为wi的有向边。 2 <= n <= 300 0 <= m <=

2020-11-17 23:12:07 84

原创 20201114考试

又考崩了 今天迟到了,然后考试前一个小时都想睡觉.... T1请问您今天要来点数对吗? 好像还是比较简单的,直接用二进制即可 #include <bits/stdc++.h> using namespace std; #define ll long long const int MAXN = 2e7 + 3; int n; ll ans; int ma[1<<11]; int main(){ freopen( "number.in" , "r" , stdin.

2020-11-14 21:00:38 82

原创 色球 (Nowcoder)

题目 n个位置,m个操作。操作1,把x个颜色为y的球放到z位置的顶部;操作2,从z位置顶部取出x个球,输出最后一个球的颜色;操作3,把位置u的球倒过来放到位置v顶部。 题解&&思路: 2020CSP-S前的最后一篇题解: 这道题其实是用来自己学习双向链表的,因为之前从没有学过链表(可为什么会写链式前向星),所以借此来学习一下 听大家说,如果学过双向链表,就是一道水题了。 其实双向链表就是要记住一下每个点的前驱与后继,然后对于一类的点要记住它的head与tail即可 知道了这一点

2020-11-06 23:16:52 17 1

转载 [dfs序基础]系列

众所周知,dfs序是一个处理子树问题的一个极好工具。dfs序将树形结构转化成线性结构,以快速维护树上点、链、子树等的值。虽然树链剖分的适用性更广,但对于一些卡常题,O(nlog2n)O(nlog2n)的时间复杂度就不算优秀了,所以以下的问题除了最后一道必须树剖外都用的树状数组+dfs序。这篇文章主要是为了总结一下我两天的工程,也记录一下从学长那里学来的卡常技巧。 一、点修改,点查询 ??语法基础可还行 二、点修改、子树查询 转化成线性结构上的点修改,区间查询即可。 #include<cst

2020-11-06 19:26:19 21 1

原创 「NOIP2017」宝藏

题目 洛谷 LOJ 思路&&题解: 其实根本不会做。。。 自己的思路: 可以考虑用状压dp,发现我的dp是5维的,直接自闭 正解1:搜索 可以考虑搜索,首先先确定根,然后还是用状压的思想,记一下每一个点的深度,然后直接暴力转移即可 #include<bits/stdc++.h> using namespace std; #define ll long long const int MAXN = 13; ll dis[MAXN] , dp[1<<MA

2020-11-05 21:04:10 18

原创 颠簸路段

题目 有一条长度为n的路,第i段路的高度hi,若hl.....hr这段路按高度排序后相邻的两段高度差不超过1则就不颠簸,求不颠簸的路段数量 思路&&题解 自己的思路: 突发奇想发现这个东西如果找到最大值maxx,最小值minn,它们的差如果等于r-l,那么好像就是一个可行解,再标记一下哪些h是相同的个数为ep,那么maxx-minn+ep等于r-l时就满足了 可是这是O(N^2)的,怎么优化这个东西呢???(自闭ing) 正解: 按照上面的思路继续推,考虑一种这样的思路:如果我

2020-11-04 20:59:07 79

原创 【BJOI2014】大融合

题目 题解&&思路: 自己的思路: 首先这道题可以发现离线是可做的,然后因为自己太菜,没有发现加边更好做,于是一直在考虑删边 删边有点烦,首先对于删去一条边后它及它的祖先的siz都会影响,那么可以使用树剖,每个点记一下siz即可 但是还没完,这样做如果删边时会影响到连通性,因为是离线则一个点的最终祖先(这里表示从当前点一直往上直到不可走为止所到的点)是会变的,sb的我发现这个东西也可以用树剖维护一下,就变得可做了 代码: #include<bits/stdc++..

2020-11-04 01:21:58 68

原创 牛半仙的妹子Tree(Nowcoder)

题目 牛半仙的妹子的座位呈一个树状结构,由 n 个点和 n−1 条边组成,1 号结点为根。 当牛半仙的一个妹子无视 牛半仙后,一个单位时间后周围的妹子也会无视牛半仙。 有些时候牛半仙为了吸引妹子们的注意,会开启鬼畜模式,这时所有妹子无视牛半仙的状态都会消失, 恢复正常,并且这之后的状态不会被之前影响。 牛半仙想知道某个妹子是否无视了他,于是他找到了你,请你帮帮他 ‘ 题解&思路 自己的思路: 感觉这还是一道较为简单的树剖题...(TM调了一天) 当询问的x满足

2020-11-03 09:16:25 1235 10

原创 数据结构(储备)

数据结构(树巨结构) 题目1ShadowIterator与啦啦 操汉子 问题描述 ShadowIterator狂拍啦啦操妹子的照片引起了啦啦操汉子的愤怒,他们吧ShadowIterator引诱到了一个迷宫中准备杀死他!!! 这个迷宫是个有向图,并且时时刻刻都在发生变化。每次变化时,首先是两个节点u,v消失了,并新生成一个节点,新节点的编号是之前出现过的节点数+1;然后原本从u或v出发的边都变成有新节点出发,指向u或v的边都指向新节点。 ShadowIterator很快被这个变化的搞得晕头转向,迷失了.

2020-11-01 23:54:02 54

原创 脑瘫题

题目 思路&&题解 自己的思路: 暴力暴力... 正解: 这道题首先发现贡献是可以拆开的,也就是说对于一个c的贡献: 显然这里答案是j-i,但是也可以想成是j-m+m-i。这样贡献就拆开了,于是每次只需要和相邻的算一下贡献即可,即用一个结构体存一下左边端点l与右边端点r,如上图就可以存成{l,m},{m,r} 那么对于查询L,R,也就是找到所有满足条件的结构体{l,r},有L<=l , R>=r的权值和 但是现在考虑怎样修改,那么就要多加一维时间,就像带.

2020-11-01 10:30:42 84

原创 [ARC074C] RGB Sequence

题目 题意翻译 n件物品,m个要求,3种颜色,n,m<=300,限制为(li,ri,xi) 要求[li~ri]内不同颜色个数为xi 问满足m条件的方案数 题解&&思路 自己的思路 显然是dp,但是普通对m,n进行dp是转移不了的,又注意到这里只有三种颜色,所以考虑对每一种颜色dp,因为颜色本质不同,即dp[i][j][k]表示从第x=max(i,j,k)个节点开始往左找到的第一个有颜色的点(也就是节点x)在i位置,第二个颜色不同的点在j,第三个颜色不同的点在k,那么这样就很好

2020-10-28 13:56:40 31

原创 Kruskal重构树

前置芝士 1.认识什么是图 2.认识什么是树 3.了解kruskal 4.倍增 定义 我乱理解的 kruskal重构树是在基于kruskal思想上进行重构(即加上虚点)得到的一棵二叉树,且符合二叉堆性质。 这些虚点其实就是生成树上两个点的边权变为了点权 方法 这里以最小生成树为例子,先用kruskal的方法得到一些边,在加边时用并查集维护,即先找到它们的祖先,然后新建一个点,向它们的祖先连边 现在有以下性质: 1.kruskal总共有2n-1个点,且实点(感性理解,非虚点)是一定在叶

2020-10-27 21:44:20 25

原创 意念的交流

题目 题解&思路: 自己的思路: 没有时间看了,我怎么这么菜呀 正解:kruskal重构树 + 启发式合并 首先根据这个性质可以发现这就是kruskal重构树嘛(可是我并没有学过),然后考虑每个虚点的点权的贡献,因为这是一个二叉树,所以考虑进行启发式合并来优化,即在两个儿子中找儿子siz更小的考虑对另一个子树贡献,现在对于一个点i,假设其左子树siz大于右子树siz,那么对于右子树的一个点,与它贡献的点的值是i的点权的话,那么这个点的dfs序(在重构树上)就必须在左子树之内,且..

2020-10-27 18:50:56 61

原创 三元组

定义 在图上的三元组是一个有三个点的简单环,如洛谷所讲,现在来考虑计数 思路&方法 首先,将无向图变为有向图,即可以选定让一条边中较大度数的点连向较小度数的点,如果度数相同,可以钦定让编号小的向大的连边。这样处理之后,在有向图上找三元环。既先枚举一条边(x,y),然后将其中一个点x所有连出边的点打上标记,然后再枚举被y直接相连的点,如果找到有点已经打过标记,则答案+1 看起来跟暴力差不多,分析时间复杂度: 首先对于一个度数大于sqrt(m)的点,连它的点不会超过sqrt(m)个,故时间复杂

2020-10-26 16:48:41 76

原创 20201022考试总结

考的非常崩。。挺水的一套题,自己却犯了很严重的错误,在临考前暴露的很多不足点 题目 T1:祖先 算法:倍增 考场思路: 一眼题,但是自己一直过不了样例,然后就开始自闭。因为运算是32位以内,所以当超32位是就可以直接取模即可,这是之前自己没有想到的,要划重点 #include <bits/stdc++.h> using namespace std; #define ll unsigned long long const int MAXN = 1e5 + 3; int..

2020-10-22 20:55:08 60 2

原创 小W吃零食

题目 思路&题解 我的思路: 显然这道题是状压dp,但是这个限制条件怎么搞?我dp怎么这么菜啊 正解 首先还是考虑状压,因为注意到n很小,且B也很小,可以设dp[i][S]表示第i天为止,S是一个七进制的状压,第j位表示第j个零食还有多少天可以吃。然后就变成sb状压dp了(其实就是我太菜了),但是这道题需要卡空间,且还要写高精度,直接用滚动数组与__int128即可 代码 #include<cstdio> #include <iostream> #incl

2020-10-20 13:47:48 25

原创 VanUSee

题目 题解&思路 为什么我觉得这道题很难。。 这是一道博弈结论题: 不难发现总共两人只会移动|S|-|T|次,且最好最后一次剩的串在原序列中间,因此考虑最后剩下的字串是否可以为T,那么对于|S|-|T|为奇数,那么最后一次即为先手,所以对于位置k(k = |S|-|T| / 2下取整)如果从k开始可以匹配T,且从k+1开始也可以匹配T,则最后一定可以剩下T串。如果是偶数,那么如果从k开始可以匹配,那么最后可以剩下T,因为左右要删去的个数是相等的,否则还要讨论一种情况,如果从k-1开.

2020-10-16 14:01:20 32

原创 贪玩(van)蓝月

题目 最窄的题目描述。。。 思路&题解 自己的思路 这是不可能有的 正解 首先需要发现一个性质,如果现在已经求出k的答案,那么k+2的答案序列就一定是在k的答案序列中插入两个(可以是末尾与开头)数所得到,至于为什么,其实我也不知道,那么考虑k+2的转换,考虑CDQ 假设对于k,在区间l-mid选了k1个点,mid+1-r选了k2个点 那么对于k+2,就有一下情况: 1.在区间l-mid选k1+1个点,mid+1-r选k2+1个点 2.在区间l-mid选k1个点,mid+1..

2020-10-15 17:34:31 30

原创 异或(GYM102331B)

题目 给定一个长度为 n 的非负整数列 a1, a2, . . . , an 和非负整数 x, 求有多少个非空子序列 1 ≤ b1 < b2 < · · · < bk ≤ n,满足对任意的 (i, j) (1 ≤ i < j ≤ k) 都有 abi ⊕ abj ≥ x。其中 ⊕ 表示按位异或。 由于这个数可能非常大,你只需要回答这个数除以 998 244 353 的余数即可。 Input 第一行两个整数 n, x (1 ≤ n ≤ 3

2020-10-12 13:59:25 88

原创 矩形Rectangle

题目 我怎么这么菜啊 思路&题解 自己的思路 以为可以用扫描线扫,但是发现这些点不连续,没有多想,就去看题解了 正解 首先扫描线扫坐标,先确定右端线,然后在从右往左确定左端的线,边扫边加点,那么矩形左右已经确定了,现在考虑左端线: 左端线上的一个点,它的贡献就为左端点上面的点 与左端点下面的点构成的矩形,但是对于上界在l点以内的点与下界在r以内的点的矩形并不是最小矩形,要减去,其中点l是在右端线上第一个比i大于或等于的,r是右端线上最后一个比i小的,由于是区间,就可以用..

2020-10-11 13:10:36 458

原创 黑暗之魂(JZOJ)

题目 题解 思路: 自环重边可以特判然后就变成了找树上的直径最大,答案加1即可 否则这就是一棵基环树,找到这个环,然后求出以环上的每个节点为根的最大直径,然后考虑在环上做贡献。 对于环上的每个点,先求出环的总长summ,显然对于i,与它贡献的点j一定满足,sum[i]表示从起点到i的环上路径长,其中起点可以随便给 然后破环成链,因为求的是最大,直接用单调队列维护即可。至于怎样找环,可以使用拓扑排序,也可以直接DFS 注意 拓扑排序不要写错,先判断这个点是否在环上,然后第二次连边时不要脸.

2020-10-09 15:28:05 29

原创 三角陷阱

题目 思路&题解 最开始想的是O(NQ)的差分数组,以为5e8能跑过去,然而。。。。 这道题可以O(Q)做,即用二维差分数组,其实似乎跟二维树状数组差不多,主要这道题是三角形。我们可以选择对角线差分,即·差分后可将其分为两个操作,若现在修改成为了这样的: 差分数组中就可以在最左列加上s,最后一行减去s,而这样的操作是可以进行差分的,于是用前缀数组差分即可 代码 #include<bits/stdc++.h> using namespace std; #defi.

2020-10-05 17:56:51 59 1

原创 [SDOI2012]基站建设

题目 题目描述 Up主家终于买电脑了,但是接下来有各种问题要处理。首要解决的问题就是网络问题。他要从移动公司开始,通过一些基站来传递网络到他家。 为了简化问题,我们假设移动公司,所有的基站,up主家位于同一条直线上,他们都位于这一条直线上的某一点x,这些点不会重合。每个基站发射和接收的范围都是一个切于地面的圆,发射的半径r1是固定的,接收半径r2是可调的的。如下图: 一个点i如果能从另一个点j接收到信号(当且仅当x[j] < x[i]),必须满足i的接收范围与j的发射范围相切,并且需要付s

2020-09-26 11:14:01 42 1

原创 【Usaco2010 Open Gold-1】奶牛的跳格子游戏

题目 Description 奶牛们正在回味童年,玩一个类似跳格子的游戏,在这个游戏里,奶牛们在草地上画了一行N个格子,(3 <=N <= 250,000),编号为1..N。就像任何一个好游戏一样,这样的跳格子游戏也有奖励!第i个格子标有一个数字V_i(-2,000,000,000 <=V_i <= 2,000,000,000)表示这个格子的钱。奶牛们想看看最后谁能得到最多的钱。规则很简单: * 每个奶牛从0号格子出发。(0号格子在1号之前,那里没钱) * 她向N号格子进行一系列

2020-09-21 17:59:23 18

原创 莫队(总结)

前置知识 分块。 普通莫队 首先来看一道例题: HH的项链 问题描述 HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。 HH不断地收集新的贝壳,因此, 他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同 的贝壳?这个问题很难回答。。。因为项链实在是太长了。于是,他只好求助睿智的你,来解 决这个问题。 输入格式 第一行:一个整数N,表示项链的长度。 第二行:N个整数,...

2020-09-17 19:53:27 33

原创 [CSP-S 2019 Day1]树上的数

题目 问题描述 给定一个大小为的树,它共有个结点与条边,结点从编号。初始时每个结点上都有一个的数字,且每个的数字都只在恰好一个结点上出现。 接下来你需要进行恰好次删边操作,每次操作你需要选一条未被删去的边,此时这条边所连接的两个结点上的数字将会交换,然后这条边将被删去。 次操作过后,所有的边都将被删去。此时,按数字从小到大的顺序,将数字所在的结点编号依次排列,就得到一个结点编号的排列。现在请你求出,在最优操作方案下能得到的字典序最小的。 如左图,蓝圈中的数字一开始分别在结点②、①、③、⑤、④。按照

2020-09-17 18:36:03 51

原创 树上石子

题目 题解&思路 首先不难发现只有|1与&0是对答案有贡献的,如果这道题把每一位拆开来做就会变得很简单,直接线段树维护一下即可,可是如果要求合并起来做就需要其它思路。自己的思路开始是想用一个lazy标记,虽然这样lazy确实可以合并,也可以进行pushdown,但是算异或值的时候就很麻烦,不知道这一位的0或1是强制覆盖还是按原来的。 正解 用两个lazy标记,lazy0表示如果这一位上有1,则这一位区间强制覆盖为1,lazy0表示如果这一位上有0,则这一位区间强制覆盖为0,那么m

2020-09-13 15:54:56 60

原创 【USACO 2009 JAN GOLD】安全路径

题目 问题描述 Gremlins最近在农场上泛滥,它们经常会阻止牛们从农庄(牛棚_1)走到别的牛棚(牛_i的目的地是牛棚_i)。每一个gremlin只认识牛_i并且知道牛_i一般走到牛棚_i的最短路经。所以它们在牛_i到牛棚_i之前的最后一条牛路上等牛_i,当然,牛不愿意遇到Gremlins,所以准备找一条稍微不同的路经从牛棚_1走到牛棚_i,所以,请你为每一头牛_i找出避免gremlin_i的最短路经的长度。 和以往一样,农场上的M (2 <= M <= 200,000)条双向牛路编号为1

2020-09-10 12:56:03 72

原创 CF1404C - Fixed Point Removal

题目 Leta1,…,ana1,…,anbe an array ofnnpositive integers. In one operation, you can choose an indexiisuch thatai=iai=i, and removeaiaifrom the array (after the removal, the remaining parts are concatenated). The weight ofaais defined as the maxim...

2020-09-07 21:40:54 66

原创 【SDOI2011 第1轮 DAY1】染色

题目 问题描述 给定一棵有个节点的无根树和m个操作,操作有2类: 1、将节点a到节点b路径上所有点都染成颜色c; 2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”、“222”和“1”。 请你写一个程序依次完成这m个操作。 输入格式 第一行包含2个整数n和m,分别表示节点数和操作数; 第二行包含n个正整数表示n个节点的初始颜色 下面n-1行每行包含两个整数x和y,表示x和y之间有一条无向边。 下面m行每行描述一个操作: “C a b c”表

2020-09-07 21:22:31 70

原创 【APIO2015】雅加达的摩天楼

题目 题目描述 雅加达(印尼首都)有座摩天楼排成一列,依次编号为到。 有只神秘生物 doge 住在雅加达,分别编号为到。号 doge 最初居住于号摩天楼。 doge 能够在摩天楼间跳跃,号 doge 的弹跳力为。每次跳跃,位于号摩天楼、弹跳力为的 doge只能跳跃到号(若)或号(若)摩天楼。 号 doge 有一条紧急的消息要尽快传送给号 doge。任何一个收到消息的 doge 可以跳跃到其他摩天楼上,也可以将消息传递给它当前所在的摩天楼上的其他...

2020-09-07 21:17:44 45 1

原创 高斯消元(新)

之前的博客好像有点水 做法 高斯消元 上面已经讲过,另一种写法是先消成倒三角状,在从下往上一个个解出未知数。 对于无解的情况: 有n个未知数,大于n个方程发现后面的方程未知数元已经被消掉可是增广矩阵的右边还有值,则判无解。另外,消元时发现某一行所有元被消掉可是增广矩阵的右边还有值,则判无解。 对于有无穷解的情况: 从下往上解方程时发现可能有无穷解,那么先把可以求出解的方程算出来,再对那些还不能求出解的方程求解,如果发现系数为0,则就有无穷解 例题 Description 有一个有趣.

2020-09-06 15:10:03 44

原创 求解梅克司

题目 这个梅克司竟然是音译... 思路&题解: 这道题有些难度,首先枚举左端点从1到n。当l=1时,对于所有的rmex的值总共可以O(N)求,现在考虑将左端点右移时对后面mex的值的变化。显然,mex的值是单调不下降的,对于右端点r如果mex(i,r)的值是大于ai的,那么当l移到l+1时,新的mex(l,r)的值可能会变为ai,于是找到最小的r,满足mex(i,r)刚好大于ai,于是就可以在线段树上二分即可。但是不是所有的都会变,在考虑一个性质,找到下一个j使得aj==ai且j>i

2020-08-24 23:37:11 97 2

原创 CPU监控

题目 题目背景 Bob 家的机子很烂……真的很烂…… 以至于看视频或者跑邪恶的暴力程序的时候,由于 CPU 使用率持续过高而宕机。 题目描述 Bob 需要一个程序来监视 CPU 使用率。这是一个很繁琐的过程,为了让问题更加简单,Bob 会慢慢列出今天会在用计算机时做什么事。 Bob 会干很多事,除了跑暴力程序看视频之外,还会做出去玩玩和用鼠标乱点之类的事,甚至会一脚踢掉电源……这些事有的会让做这件事的这段时间内 CPU 使用率增加或减少一个值;有的事还会直接让 CPU 使用率变为一个值。 当然

2020-08-23 23:35:43 85

原创 关于图论中的一些知识与技巧

一.序 1.dfs序 dfs序,大多都用在树上,用dfs跑一遍,每个节点第一次被访问到的时刻就是这个节点的位置,一般就是将一棵树求dfs序这样就可线性求一些问题,用线段树,树状数组,主席树等方法。同时,满足这样一个特点: 一颗子树的dfs序一定是一段区间 有了这个性质,就可以很方便地进行操作了 2.欧拉序 欧拉序与dfs有些相同,主要是在dfs回溯时也把访问到的点都加入序中,也就是说一个点可以被加入多次。 利用欧拉序就可以用RMQ求LCA,也就是两个点在欧拉序中第一次出现的位置之间的区间.

2020-08-20 13:14:06 48 1

原创 JZOJ 4726 种花

题目 思路&&题解 反思 自己的思路:想到DP,发现是nm,然后时间怎么也优化不下去,最后就放弃了 与正解的偏差:如果是贪心,那么明显不对,然后就没多想了,且压根没想到过用堆做这道题 正解 首先发现贪心显然错误,但是可以先维护每个a[i]左边与右边的端点,把所有的数放进堆中,然后取出一个数a[i]后再将a[i]左边的数+a[i]右边的数-a[i]放进堆中,但这样左端点与右端点会变,举个例子: 1 3 4 2 (先将4取出,然后将4的左端点变为1,右端点变为1(2的右端点),

2020-08-18 20:50:28 35 1

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除