自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yangzijiangac的博客

记录美好生活

  • 博客(39)
  • 收藏
  • 关注

原创 HDU 3966 Aragorn's Story(树链剖分+线段树区间更改+单点查询)

由于hdu的oj在维修,我的代码提交不了,所以很遗憾,我现在写的代码不能确认其正确性,有点难受。其实这个题是一个简单的树剖板题,但是我敲完代码后,准备交,但是由于以上原因,交不了,我就去搜了题解,看了正解和我的代码的懒标部分不太一样,所以我不知道我的代码的正确性,我也测了一些样例感觉没什么问题,所以就先放着再说正确性待定代码:#include<cstdio>#include&...

2020-01-30 23:03:51 138

原创 树链剖分板题入门:P3384重链剖分

题目连接:重链剖分思路:把树剖剖分出来,然后就线段树上修改,注意每次先修改当前节点所在链的头的深度大的,然后让它为链的头的父亲即可,直道两个点,成为一条链上即可老子搞了你这么多天,滚吧毒瘤题,hhhAC代码:#include<bits/stdc++.h>using namespace std;//树链剖分#define ll long longll n,m,r...

2020-01-29 14:27:15 178

原创 树链剖分:洛谷P3128 最大流Max Flow

题目连接:最大流Max Flow题解:这道题可以用树上点差分解决,也可以用树链剖分写,上一篇博客使用树上点差分写的,这次因为我刚学树剖,所以用树剖将这到题写了树剖的写法:第一遍dfs()将重儿子,每个点的父亲,每个点的深度标记出来,第二遍dfs()按照重儿子的顺序进行有优先dfs()得到当前的dfs序,此时树已经被剖分好了,然后我们就写一个线段树求区间最大值,因为是区间修改,所以需要...

2020-01-29 14:09:39 185

原创 Educational Codeforces Round 79 (Rated for Div. 2) B. Verse For Santa

题目连接:最近偷懒没学,也因为新型冠状病毒,弄得人心惶惶,然后今天打了以前的cf赛,打cf真的是让我很难受,我总是把题往各种方面想,然后就偏了方向,最后写出来的代码又长又臭一开始看到题,我的思路是贪心,感觉没什么问题,测了几组样例,就交了,然后WA,交了两发后,没往深处想,就切了思路,然后就找到了贪心思路的反例,但也没去想第一种思路,第二种思路:二分+前缀和枚举,想到了,手测了几组数据,...

2020-01-28 18:04:10 195 1

原创 牛客面试题:最长公共连续子序列

今天晚上没什么事,就随便写了一下,牛客算法能力测试的体目,总共时间2个小时,前三道说是水题,应该也不算是,第一题,我用了map映射过了,感觉也不是很水,也花了我不少时间,第二题我感觉是一个dp,但是数据量很小,明显可以暴力过,然后就暴力过了,第三题是个规律题,就算找着找着就发现了这种规律,然后就过了,第四题是一个,LCS的变形题,LCS我已经做过很多变了,它的变形,我就画了个图,推了一下就出来了...

2020-01-23 23:19:46 314

原创 Codeforces Round #615 (Div. 3) B Collecting Packages

题目链接:B Collecting Packages一道很简单的题,但是我在开数组上出了问题,一直runtime error 4 test 我这里提供两种思路,第一种思路也是我最开始想到的,但是因为数据范围没搞明白,这种思路在比赛上没有过,第二种思路也是最普遍的思路,因为在比赛上第一种思路没有过,我就切了思路,用第二种思路过了题解1:一理解题意,我就想到这个思路,开始敲,但是数据范围我...

2020-01-23 13:34:56 186

原创 Poj 3321 AppleTree dfs序+树状数组

题目链接:AppleTree题解:树上线段树的入门题:感觉没什么可说的,维护区间和我没用线段树,数状数组更方便,但是我还是wa了几发,因为用了vector,TLE了,我比赛再也不用vector了,注意如果建双边的话,数组开两倍,还有时间戳代表区间位置,把dfs序求出来即可TLE代码:#include<cstdio>#include<algorithm>#in...

2020-01-21 22:10:36 163

原创 HDU 5692 Snacks 好题:dfs序+线段树维护区间最值

题目链接:Snacks最近想学树链剖分,但无奈,前置技能还不会,dfs序还没搞懂是什么玩意,就上B站学习了一波,无奈太菜了,也没听太懂,就了解了个大概,想着去刷道题,练一练,这不,找到了这道 HDU 2692 Snacks,这题真的是好题,费了我不少时间,才搞定, 可能是在家效率太低,可能最近对头发的保养很重视,一天到晚坐在电脑面前学习对目前的我来说是不太可能了。WA了20来发:上干...

2020-01-21 18:11:13 936

原创 Codeforces Round #614 (Div. 2) C NEKO's Maze Game

题目链接:codeforce 题解:一道很简单的题,但是我的思路偏了,没写出来,一开始看到,就想到了bfs(),感觉完全没问题,其实算了一下时间复杂度,感觉会TLE,但是我依然倔强,想着对bfs()进行一波剪枝,可以过,没想到还是TLE,赛后想到了正解,不过感觉自己代码能力有提升,现在想到一些东西,可以实现TLE代码:#include<bits/stdc++.h>usin...

2020-01-20 10:23:28 1488

原创 洛谷:P3258树上点差分

题目链接题解:难点在于根据访问顺序推出差分方式,前置知识:LCA+树上点差分AC代码:#include<bits/stdc++.h>using namespace std ;const int maxn=3e5+5;struct node{ int to,nex;} tr[maxn*4];int pre[maxn][32],depth[maxn],he...

2020-01-20 00:19:43 260

原创 Codeforces Round #598 (Div. 3) B Minimize the Permutation

思路题:题意:给 1--n中的数任意排列的序列,我们可以交换相连的两个数,但是我们交换的次数最多n-1次,而且每个位置只能交换一次,求这个序列最小的字典序思路:由于限制条件,我们最多交换n-1次,我们先从后往前交换,把交换的位置做标记,然后再从前往后交换,这样的顺序方便实现空位置的交换AC代码:#include<bits/stdc++.h>using namesp...

2020-01-19 14:19:59 145

原创 树上主席树:洛谷P2636

上厕所的时候想通了,果然厕所是一个思考的好地方普通区间主席树和树上主席树的区别:这两个其实只有建树方式不同而已,普通主席树在for循环里面建树,for循环就相当于线性的区间建树,而树上主席树是在树形结构上建主席树,建出来的主席树有树的性质,所以我们要求任意两点之间最短路径上的第k小,就需要用到lca,这里其实用到了树上点差分的思路,在树上建树其实就是在dfs()遍历树的时候我们将当前版本...

2020-01-17 13:08:37 398 1

原创 树上差分:点差分(P3128 [USACO15DEC]最大流Max Flow)

吐槽:昨天学习了差分数组感觉很不错,通过差分递推答案,很节省时间,昨天晚上睡觉前学习了一波树上差分,没学懂,今天临走前补上,挺好树上差分点差分:我们要对树上一条链的权值进行修改,我们可以利用树上差分,比一个一个点修改快很多,如果一个一个点修改dfs()时间复杂度爆炸啊!树上如何进行点差分:先把两端点加上权值,然后把lca和它的父亲的权值减去,dfs一遍就把一条链上的权值给修改了...

2020-01-14 11:19:18 168

原创 差分数组:理解

差分数组:差分数组的思路其实是通过差分,递推出经过部分区间修改后的原数组,例如我们要对区间进行加减操作,最终求某个区间的值举个栗子:a[ ]12345差分p[ ]11111修改区间:| [1 5] +2 | [2,3] -1| [1 3] +3 |修改后的差分p[ ]601-11修改后的a[ ]6676...

2020-01-13 17:43:32 163

原创 可持久化数组再理解

吐槽:今天是集训的最后一天,也不知道该学什么,就再复习一下可持久化的思想,又鞭尸了一遍可持久化数组。可持久化思想:对于每次修改的数组我们建立一个新版本,因为我们是动态开点式,对于可以利用的点进行利用,所以空间方面会节省很大。我们将上一版本的树复制一遍,将没有利用到的点省去重新开这个点所多出的空间,用图表示也就是将新开的一条链连上上一个没有用到的点,形成的一颗新树对于多版本root[...

2020-01-13 14:52:23 178

原创 经典DP: HDU(1421)搬寝室

题目链接:题解:用dp[i][j]代表从i个数中取j对数,首先我们对给定的数排一个序,使取答案的时候,局部最优,因为我们有取或者不取两种状态,所以当不取的时候我们当前状态等于上一个状态,dp[i-1][j],当取的时候,我们上一个状态为dp[i-2][j-1]代表i-2个数取j-1对数加上取的sqr(a[i],a[i-1])AC代码:#include<cstdio>#in...

2020-01-11 17:56:03 144

原创 HDU 4638 莫队+小思路

题目链接:Group题意:给n个人的编号,每个人都对应一个编号,规定i和i-1,i+1一个群集合,然后q个询问询问区间[l,r]有几个集合题解:用 vis[ ] 标记当前区间是要删除还是加入,如果当前区间要加入x,就判断当前区间存在vis[i+1]和vis[i-1]不存在,如果存在res--,如果不存在,肯定加入的是一个集合,如果只存在其中的一个,肯定不用加减,减的操作也一样,把当前...

2020-01-10 20:34:57 124

原创 莫队算法: [国家集训队]小Z的袜子 /【模板】莫队

[国家集训队]小Z的袜子 /【模板】莫队学习算法,就是先要学习模板题,这到题就是我入门莫队的启蒙老师题解:先理解莫队的思想,排过序后的莫队,时间复杂度大大降低,那么我们目前只需要离线处理区间问题即可,这题询问区间中出现对数的数量,那么我们只需要在已知区间上进行加减操作就能得到当前区间的答案,这个统计概率,只要在求出增加的对数和减少的对数在区间加上,在区间减去即可AC代码:#inc...

2020-01-10 13:15:05 194

原创 codeforces 617 E 莫队算法(求区间异或为k的数量)

莫队算法这么牛逼的一个算法,我决定把他学会,虽然目前我还对核心操作add(),sub()不太理解,但是我一定要把它肯出来,因为莫队对处理区间信息问题,真的是又快又牛批题目链接:XOR and Favorite Number AC代码:#include<cstdio>#include<cstring>#include<cmath>#include&...

2020-01-10 11:28:34 272

原创 莫队算法/树状数组

题目链接:HH的相连莫队算法:利用莫队算法对区间询问,进行离线操作真的很方便,但是这题数据量有点大,做不了,听说数据加强了,但是还是利用莫队来搞一发,只有60分TLE莫队代码:#include<bits/stdc++.h>using namespace std;//莫队算法//求区间种类const int maxn=1e6+1000;struct node{ ...

2020-01-09 17:06:41 162

原创 莫队:求前缀和

莫队,离线操作,不断将区间逼近所求区间,加减贡献值即可子段求和AC代码:#include<bits/stdc++.h>using namespace std;//莫队算法const int maxn=1e5+5;int pos[maxn],a[maxn],c[maxn];long long ans[maxn],res;struct node{ int l...

2020-01-09 12:05:22 272

原创 莫队算法:洛谷:2709

莫队入门板题:对于离线操作可以利用莫队来写,利用分块思想,进行排序,将区间距离最小化,实现O(nsqrt(n))的时间复杂度,对于贡献值,如果区间需要就加上,如果区间不需要就减去题目链接:小B的询问AC代码:#include<bits/stdc++.h>using namespace std;//莫队算法const int maxn=1e5+5;int pos[ma...

2020-01-09 11:34:41 182

原创 点分治学习:树的重心(质心)

树的重心定义:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心dfs一遍就可以找到树的重心void dfs(int u,int fa){ //vis[u]=true, sizx[u]=1; max_part[u]=0; for(int i=head[u]; ~i; i=tr[i].nex) { int ...

2020-01-08 21:20:19 637

原创 Codeforces Round #611 (Div. 3) C:Friends and Girls

题目链接题意:送礼物,每个人都要送给别人礼物和收到别人礼物,一开始给你个序列,已知其中一些序列,然后求满足情况的完整序列题解这个题是个思路题,唉,我以为是构造环,写了一个bfs(),令出度入度匹配,然而不幸TLE,真正的思路是,点只要不在原位置,就可以TLE代码:#include<bits/stdc++.h>using namespace std;#define...

2020-01-08 14:27:40 207

原创 Hello 2020 C:New Year and Permutation

题目链接一道规律题,找到规律就可以解出来找不到规律就很难解出来,虽然很难找,但是思考在过程中,会让思维更敏感,对这些规律更敏感,值得一写AC代码:#include<bits/stdc++.h>using namespace std;const int maxn=250000+5;long long dp[maxn];int main(){ long long...

2020-01-07 19:22:51 186

原创 codeforce hello 2020 B New Year and Ascent Sequence

题目链接最近要鼓起勇气打cf了,也不枉用pc端加速了浏览codeforce的速度,但是我的思维烂的要死,最近只能多打打cf去提升一下思维了,现在连cf的B题都写不出来,真是菜的要命题意题意给n个组数序列,判断它和其他或者自身两两组合是否会产生一个新生的上升序列,求共有多少种组合法,只能两两拼接或自身拼接题解:如果自身本身就是,那么它本身就是一个有效的组数,那么他和其他组合的方式...

2020-01-07 17:30:30 288

原创 Codeforces Round #612 (Div. 2) B Hyperset

题目链接: codeforce题意:给n排字符每排k个个字符,k个字符只包含三种字母 S E T,这三种字符代表三个特征,每排可以当作一张卡片,三张卡片组成的特殊形式可以成一套,特殊形式是三张卡片的每一列要么全不同,要么全相同,问n排卡片,从中选择卡片最多能有多少种选择题解:这道题可以构造答案从而降低复杂度,我还是太菜了,打cf打的太少,从而对于这种思路性的题一点想法都没。如何构造,...

2020-01-06 21:30:20 244

原创 keywords search (hdu 2222 AC自动机模板题)

AC自动机模板题:keywords search 网上说AC自动机的前置技能需要学习字典树和KMP,可我的感觉和KMP关系不太大,和字典树的数据结构类型关系倒是有密切联系,一定是我太菜了,所以理解不是那么深刻AC自动机的关键:失配指针的构造fail指针的构造是由bfs()分层遍历完成的,首先我们先将第一层压入队列,第一层的fail[]:0节点,然后寻找下一层的失配指针,下一层的失配指针...

2020-01-06 19:05:41 152

原创 HDU 1166 敌兵布阵(分块写法)

老是鞭尸这道题,我也挺不好意思的,但是没办法,练手还是挺好的敌兵布阵分块做法题解:分块的做法,一定注意,要把块中的数据,和数组中的数据修改了,不然会出问题,然后分块就正常写法写就行了,边角和块AC代码:#include<cstdio>#include<algorithm>#include<cmath>#include<cstring...

2020-01-06 10:32:58 163

原创 可持久化并查集:洛谷p 3402

题目:可持久化并查集模板:洛谷P3402吐槽:板子稳点,心里总是会比较放心的,这题我wa了十几发后成功对着别人的代码找到了问题,并查集按秩合并里面我把rank[x]++写错了 modify(int l,int r,rootrank[ver-1],root[ver],x,depx+1),本来应该这样写,我把下标给弄错了,真难受题解:可持久化并查集需要用到按秩合并的方法写,不能用路径压缩...

2020-01-04 15:18:38 312

原创 并查集之按秩合并

最近在学可持久化数据结构,看了看可持久化并查集,无奈本人很菜,只会路径压缩实现并查集,不会其他方法,但是可持久化并查集用路径压缩会炸内存,所以我们需要用到按秩合并的方法去维护树形集合按秩合并的特点,秩低的向秩高的进行合并看下代码:int findx(int x){ if(x!=pre[x]) { pre[x]=findx(pre[x]); } ...

2020-01-04 10:49:12 976 2

原创 可持久化数组:洛谷3919

最近一直在搞数据结构,主席树,理解也不算特别深刻,还没有对动态开点和可持久化思想理解特别深刻,所以,今天我就准备写一篇可持久化数组来通一通脑子新手入门题目:洛谷:可持久化数组就题论题:给一个数组a[ ]:我们可以对其进行修改,然后询问不同版本的值,最初的版本为:0,修改一次就产生一个新版本朴素做法:写一个二维数组ver[i][j] i 代表版本,然后寻问 第 i 个版本第pos...

2020-01-04 08:47:27 198

原创 树的直径模板题:poj1985

题目链接:树的直径题解:树的直径:max(bfs(1),bfs(pp)),证明就不证明了,结论是从树上任意一点,到距离它最远的另一点pp,再从pp到距离它最远的一点p,当前p的距离就是树的直径AC代码:#include<cstdio>#include<algorithm>#include<cstring>#include<vector&g...

2020-01-03 10:21:09 384

原创 D.Restore Permutation

题目链接题意:给你一个序列s:s代表的是p[i]前小于p[i]的数组加起来的和,比如 3 2 1 的s:0 0 0题解:我们每次一定可以确定的是最后一位的数,因为最后一位前面一定有所有小于它的数,所以我们可以确定最后一位的数,我们确定最后一位后,把他从数组中删去,然后在在接下来的数组中求最后一位的值,因为是最后一位对前面的值并不造成影响所以二分查找答案即可AC代码:#inclu...

2020-01-03 09:17:58 169

原创 poj 1986 lca板题

poj:1986这两天学会了树上倍增求lca,感觉树上倍增在线求法好方便呀,而且很快,利用二进制拆分的思路和倍增思想,感觉挺不错,然后验了几道题感觉还不错,我写的板子解决一些题应该没什么大问题,学到新东西,心里怪开心的AC代码:#include<cstdio>#include<cstring>#include<algorithm>using na...

2020-01-02 15:52:16 193

原创 HDU 2586 LCA求两点最短距离

HDU 2586题解:求树上两点最短距离,利用lca(u,v)求出u,v最近公共祖先la,并记录根节点到u,v,la的距离,最短距离:dis[u]+dis[v]-2*dis[la]AC代码:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;//lca...

2020-01-02 15:33:49 290 1

原创 等差子数列:rmq+分块思想

题目链接:等差子数列题解:看到这一题,我的想法是利用分块去写,将等差数列分为一块,但是由于等差数列有连续性,故利用分块思想,将解答案分为三步,两边角的,最大等差数列长度,再求中间部分的最大序列长度,中间部分可以利用rmq去求,因为是数列,所以求区间最值用rmq就很方便了AC代码:#include<cstdio>#include<algorithm>#inc...

2020-01-02 14:50:40 217 2

原创 树上倍增:求LCA(u,v)

求LCA(u,v)的三种方法:1:rmq+dfs()序2:并查集+dfs()3:树上倍增然而听说1,2两种方法不怎么火热,3是目前最受欢迎的,故我就跟随大众潮流,学了树上倍增求LCA(u,v)的方法树上倍增:利用了rmq的思想,首先定义一个pre[i][j]数组,pre[i][j] 表示 i 往上走 2^j 层所表示的父辈,根据倍增关系,我们可以得到:pre[i][j]=pre[pr...

2020-01-01 17:16:01 235

原创 rmq查询区间最值

rmq:时间复杂度:O(nlogn)的时间复杂度,利用动态规划进行预处理,dp[i][j], i:代表以i为起点,j:代表 i+(1<<j)-1 的长度,dp[i][j]代表:[i,i+(1<<j)-1]区间的最大值,由于区间的合并性质,可以写出所有以 i 为起点 i+(1<<j)-1长度的区间最大值查询操作:查询区间[l,r],由于log2(r-l+1)...

2020-01-01 11:38:44 156

空空如也

空空如也

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

TA关注的人

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