随笔分类 -  刷题-洛谷

1
摘要:欧拉路径的定义 如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径(Euler path)。如果一个回路是欧拉路径,则称为欧拉回路(Euler circuit)。具有欧拉回路的图称为欧拉图(简称E图)。具有欧拉路径但不具有欧拉回路的图称为半欧拉图。 其实就是 一笔从起点经过所有边到达终点( 阅读全文
posted @ 2019-10-07 15:46 一块钱的争论 阅读(582) 评论(0) 推荐(0)
摘要:转载自洛谷[https://www.luogu.org/blog/yihan/unordered](https://www.luogu.org/blog/yihan/unordered) 这是啥? 我们知道,在c++11中出现了一些有用的容器,其中包括了两(三)个非常实用的容器:unordered_ 阅读全文
posted @ 2019-08-16 16:32 一块钱的争论 阅读(7306) 评论(0) 推荐(2)
摘要:题意 一串数表示树高,从第一棵树开始,跳到比当前矮的不消耗体力,否则消耗一点体力,每次询问有一个步伐限制,求每次跳到最后一棵树最少耗费多少体力。 基本思路 典型的单调队列优化$dp$题,$dp$方程为 $$dp[i]=a[i]<a[min(dp[j].pos)]?dp[j]:dp[j]+1,\qua 阅读全文
posted @ 2019-08-10 22:47 一块钱的争论 阅读(210) 评论(0) 推荐(0)
摘要:悬线法简介 悬线法最早由王知昆dalao在IOI2003年国家集训队论文-《浅谈用极大化思想解决最大子矩形问题》中最早提出,用于解决最大(最优)子矩阵及相关变形问题。 定义 极大化思想 定理一 在一个有障碍点的矩形中的最大子矩阵一定是一个极大子矩阵 定理二 一个极大子矩阵的四边一定不能向外扩展,即要 阅读全文
posted @ 2019-08-07 16:05 一块钱的争论 阅读(912) 评论(0) 推荐(0)
摘要:简介 一、定义 单调栈是一种高效,方便,简单的数据结构,其特点与单调队列类似,满足在栈里的数据呈现单调递增或者递减的特性,用来计算一定区间的值。 二、原理 (1)当新元素在单调性上优于栈顶时(单增栈新元素比栈顶大,单减栈新元素比栈顶小),压栈,栈深+1; (2)当新元素在单调性与栈顶相同(新元素于栈 阅读全文
posted @ 2019-08-05 11:30 一块钱的争论 阅读(315) 评论(0) 推荐(1)
摘要:题意 一颗多叉树,给四个点,求有无公共点。 基本思路 倍增LCA,若$dep(lca(a,b))>dep(lca(cd))$,若有公共点,则$lca(lca(a,b),c)==lca(a,b)$或$lca(lca(a,b),d)==lca(a,b)$,反之亦然 倍增做法 1 #include<bit 阅读全文
posted @ 2019-08-04 00:13 一块钱的争论 阅读(176) 评论(0) 推荐(0)
摘要:洛谷模板题 P3379 给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 ST表 基本思路 树的构造 举个栗子 欧拉序 存储第一次出现的位置 使用链式前向星存储树的结构,首先求一棵树的欧拉序,然后根据两点的公共祖先就是欧拉序中(第一次出现时)两点位置区间内的深度最小点, 这一定理转化成RMQ 阅读全文
posted @ 2019-08-03 00:09 一块钱的争论 阅读(475) 评论(0) 推荐(0)
摘要:前向星 在了解链式前向星之前,先简单了解下前向星。前向星是一种边集数组,先把每条边按照从小到大的顺序排序,如果起点一样,那么就按照终点从小到大来排序,并记录下每个点为起点在数组中的位置和该点所连边的数量。 $len[i]$表示以$i$为起点的边的条数,hehiad[i]表示以$i$为起点的边在数组中 阅读全文
posted @ 2019-08-01 19:49 一块钱的争论 阅读(345) 评论(0) 推荐(0)
摘要:优先队列 指使用STL库的priority_queue进行模拟,优点在于实现简单。可用于求区间最值,由于使用堆操作,时间复杂度在$[n\log_2{n}~n^2\log_2{n}]$,当数据较大时容易TLE 单调队列 单调队列使用STL的deque进行模拟,也可以用数组和双指针$(head,tail 阅读全文
posted @ 2019-07-30 12:42 一块钱的争论 阅读(571) 评论(0) 推荐(0)
摘要:没看过一维ST表的可以移步 "https://www.cnblogs.com/tldr/p/11261351.html" 二维ST表的思路参考一维,每次维护一个step step的一个正方形 因此 洛谷P2216理想的正方形是一个很好的二维ST表 一般来说,二维ST表询问的是某一个状态,这样可以用一 阅读全文
posted @ 2019-07-29 12:53 一块钱的争论 阅读(134) 评论(0) 推荐(0)
摘要:ST表简介 ST表示解决RMQ问题的一种暴力手段,处理时间$O(n\log_{2}{n})$,查询时间$O(1)$,空间$O(n\log_{2}{n})$. 处理 ST表的第0列存放第一层数据,即原始数据; ST表的第1列存放第二层数据,即步长为$2^0$的$min/max$的数据; ST表的第2列 阅读全文
posted @ 2019-07-28 22:46 一块钱的争论 阅读(137) 评论(0) 推荐(0)
摘要:"P2278 [HNOI2003]操作系统" 基本思路 使用优先队列毋庸置疑,每次新来一个进程判断$start =now+q.top().run$,若大于,则队列头元素可在新元素到达前完成,直接到达完成状态即可; 若小于,且优先级不大于头元素,则插入队列;若优先级大于头元素,则需要中断,判断$sta 阅读全文
posted @ 2019-07-26 10:51 一块钱的争论 阅读(166) 评论(0) 推荐(0)
摘要:基本思路 树形dp入门题,0表示不选中1表示选中。 $$ \begin{array}{l} treedp[u][0]=max(treedp[u.boss][0],treedp[u.boss][1])\\ treedp[u][1]=treedp[u.boss][0]+arr[u]; \end{arra 阅读全文
posted @ 2019-07-21 13:43 一块钱的争论 阅读(106) 评论(0) 推荐(0)
摘要:基本思路 一个结构体存储操作,另外一个存储节点,操作按时间排序并遍历即可。 c++ include using namespace std; typedef struct { int vertex,next,time; }OP;OP op[100010]; typedef struct{ int p 阅读全文
posted @ 2019-07-07 00:07 一块钱的争论 阅读(153) 评论(0) 推荐(0)
摘要:需要路径压缩 c++ include using namespace std; int arr[10010]={0}; int find(int a) {//路径压缩 // if(arr[a]==a)return a; // return arr[a]=find(arr[a]); if(arr[a] 阅读全文
posted @ 2019-07-05 00:37 一块钱的争论 阅读(141) 评论(0) 推荐(0)
摘要:基本思路,使用差分数组 arr[i]=a[i] a[i 1]; c++ include define maxn 1000000 using namespace std; int arr[maxn],n; int lowbit(int x) { return x&( x); } void add(in 阅读全文
posted @ 2019-05-21 00:46 一块钱的争论 阅读(97) 评论(0) 推荐(0)
摘要:常规模板题,lowbit(x)=x& x;求和往左走,点加往右走。 c++ include define maxn 1000000 using namespace std; int arr[maxn];int n,m,x,y,d; int lowbit(int x) { return x&( x); 阅读全文
posted @ 2019-05-20 22:42 一块钱的争论 阅读(92) 评论(0) 推荐(0)
摘要:采用前缀和思想,用二分查找寻找区间,时间复杂度O(n+nlogn) c++ include define maxn 2000000 using namespace std; long long arr[maxn+1]; long long brr[maxn+1]; int main() { brr[ 阅读全文
posted @ 2019-05-20 01:52 一块钱的争论 阅读(140) 评论(0) 推荐(0)
摘要:具体解法是:对队首的某一状态,枚举每一个开关灯操作,记录到达这一新状态的步数(也就是老状态 + 1),若是最终答案,输出,若不是,压入队列。采用结构体记录每个节点,包含当前状态和步数。 c++ include using namespace std; typedef struct{ int stat 阅读全文
posted @ 2019-05-19 19:26 一块钱的争论 阅读(275) 评论(0) 推荐(0)
摘要:1. 朴素解法,复杂度On2,只能过一半的点。 c++ include using namespace std; typedef struct{ int num; int len; int dlen; }Missile; Missile miss[100010]; int cnt=0,n=1,max 阅读全文
posted @ 2019-05-16 19:23 一块钱的争论 阅读(161) 评论(0) 推荐(0)

1