![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 73
鲜果维他命
Don't be a programmer,to be a problem solver
展开
-
腾讯2020校园招聘笔试题解
第一题:小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为m|S(m为一个整数且1<=m<=100),例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?思路:这里直接dfs栈模拟即可#include<bits/stdc++.h>using namespace std;string str原创 2021-11-30 22:46:29 · 429 阅读 · 0 评论 -
Codeforces E. Gold Transfer
原题链接http://codeforces.com/contest/1535/problem/E题意:一开始只有一个0号根节点节点,并且告诉你a0,c0a_{0},c_{0}a0,c0表示0号节点上面的金块个数以及单个金块的价格,现在有q次操作操作1:给你pi,ai,cip_{i},a_{i},c_{i}pi,ai,ci,新的i号节点加入到pi节点的儿子节点,i号节点上面有ai个金块,以及每个金块的价格ci(保证ci>cpic_{i}>c_{pi}ci>cpi)操作2原创 2021-10-13 18:57:05 · 115 阅读 · 0 评论 -
2017ICPC西安现场赛 XOR(线段树合并线性基)
题目链接:https://nanti.jisuanke.com/t/A1607题目大意 :给你长度为n的序列,以及一个数k,有q次询问,每一次询问给你一个区间[L,R],然后你可以在区间内取任意多个数(每个数只能去一次),异或这些数得到一个值val,使得k|val的最值大,输出这个最大值分析:或(|)操作,我们知道对应二进制为只要有一个1,结果就为1,所以我们让k|val最大,必须把k的高位0尽可能变为1,那么我们对k的二进制位取反得到一个数x,也变成了我们尽可能保留x的高位1,所以我们把原序列的所有数原创 2021-07-21 18:06:23 · 183 阅读 · 0 评论 -
点分治超详细分析+视频讲解+题目大全(不再为点分治而烦恼)!
点分治超详细分析+视频讲解+题目大全(不再为点分治而烦恼!一.点分治原理分析及应用二.点分治视频讲解视频链接三.点分治练习题1.P3806 【模板】点分治12.P2634 [国家集训队3.P4149 [IOI2011]Race4.CF161D Distance in Tree5.P4178 Tree一.点分治原理分析及应用二.点分治视频讲解视频链接https://www.bilibili.com/video/BV1PE41197md?p=1三.点分治练习题1.P3806 【模原创 2021-07-16 18:33:31 · 254 阅读 · 0 评论 -
树链剖分题目大集
树链剖分题目大集如果还没学树链剖分的伙伴可以跳转到下面的博客1.模板题 P3384 【模板】轻重链剖分/树链剖分2.洛谷-P3379 【模板】最近公共祖先(LCA)(强行用树剖写LCA)3.洛谷-P2590 [ZJOI2008]树的统计4.P3038 [USACO11DEC]Grass Planting G5.P3178 [HAOI2015]树上操作6.树链剖分+线段树 2019ICPC西安邀请赛E7.HDU - 5052树链剖分主要是解决对于树上路径的修改和查询操作,常常结合线段树来出题,使用线段树维护原创 2021-07-11 15:23:06 · 420 阅读 · 0 评论 -
2019ICPC西安邀请赛E题,线段树+述链剖分+nim博弈
Treehttps://nanti.jisuanke.com/t/39272题意:给你一颗树,结点权值告诉你,你有如下三种操作1 s t 修改从1到s的路径上的所有点,a[i]=a[i]|t2 s t 修改从1到s的路径上的所有点,a[i]=a[i]&t3 s t 询问将1到s的路径上的所有点作为石头堆,再加上一个个数为t的石头堆,进行一次尼姆(nim)博弈,先手胜利输出YES,否则输出NO前置知识:nim博弈先手的必胜条件为,n堆石头的异或和不为0,也即a[1] ^ a[2] ^a[原创 2021-07-08 19:24:20 · 174 阅读 · 0 评论 -
dfs序+树链剖分,超详细讲解+原理分析+模板(看不懂来打我)
dfs序+树链剖分,超详细讲解+原理分析+模板(看不懂来打我dfs序+树链剖分一. 树链剖分能解决什么问题?二.树链剖分前置知识1.dfs序2. 时间戳3.dfs序和时间戳有什么用处线段树的区间修改和查询,对链进行操作三.树链剖分模板四.视频资源讲解dfs序+树链剖分一. 树链剖分能解决什么问题?二.树链剖分前置知识1.dfs序2. 时间戳按照dfs第一次访问的顺序,给每一个节点标记上时间戳3.dfs序和时间戳有什么用处开始剖分,跑第二次dfs的作用,也即dfs1和dfs2原创 2021-07-07 17:45:52 · 1025 阅读 · 0 评论 -
树状数组(详细分析+应用),看不懂打死我!
树状数组介绍在学习一个算法之前一定要清楚它能干嘛,能解决什么样的问题,对你解题是否有帮助,然后才去学习它!那么接下来看如下几个问题什么是树状数组顾名思义就是一个结构为树形结构的数组,于二叉树的结构类似但又不同,它是在二叉树的结构上删除了一些中间节点,来看两幅图就明白了.1.这是二叉树的结构2.这是树状数组的结构不难发现,树状数组相比于二叉树删除了一些节点,但是为什么要删除呢?这就和树状数组的一些性质(lowbit)有关了,不懂没关系,继续往下看.树状数组可以解决什么问题呢?可以解决大部原创 2021-07-03 15:09:04 · 45519 阅读 · 72 评论 -
Poj 2777 Count Color(可合并区间线段树)
题目链接https://vjudge.z180.cn/problem/POJ-2777题目大意:给你一个长度为N的[1,N][1,N][1,N]区间,一开始区间的颜色初始化为1,给你一个T表示颜色在[1,T]范围类可选,然后你有M次操作,操作有如下两种情况1.C A B C 表示把区间[A,B][A,B][A,B]染成颜色C2.P A B表示查询区间[A,B][A,B][A,B]有多少种不同颜色,并输出分析:这道题一看区间修改加区间查询,线段树跑不掉,首先对于一个区间我们不能单纯通过它左儿子不同原创 2021-05-13 12:24:26 · 133 阅读 · 0 评论 -
线段树---扫描线(求重叠矩形面积)
线段树---扫描线求面积一.讲解二.练习题一.讲解扫描线:下面是来自soar转载的一篇博客。这篇博客解决了我对算区间长度时的不理解。实际上这个线段树的叶子节点保存的是这个点x坐标到下一个x坐标(排序后的)的区间长度。题意:二维平面有n个平行于坐标轴的矩形,现在要求出这些矩形的总面积. 重叠部分只能算一次.分析:线段树的典型扫描线用法.首先假设有下图两个矩阵,我们如果用扫描线的方法如何计算它们的总面积呢?首先我们将矩形的上下边分为上位边(即y坐标大的那条平行于x轴的边),和下位边(y坐标转载 2021-05-12 16:20:42 · 893 阅读 · 1 评论 -
双向循环链表(C语言实现)
双向循环链表我们知道单链表对于最后一个元素的删除和插入是很不方便的,需要一直遍历到最后一个元素才行,而双向循环链表只需要找到,头节点的上一个元素的地址即可双向循环链表中每一个元素块都有两个指针prev和next,prev连接它的上一个元素的地址,而next连接它下一个元素的地址,为了实现更好的删除和插入操作,一般把链表设置为带头结点的这样我们就可以利用双向循环链表实现增删改查双向链表结构图1.初始化链表typedef struct node{ int key; node *prev,*n原创 2020-10-28 10:13:34 · 967 阅读 · 0 评论