算法
文章平均质量分 79
gaojunonly1
这个作者很懒,什么都没留下…
展开
-
拓扑排序模板专题
拓扑排序是对有向无环图(DAG)进行排序,从而找到一个序列。该序列满足对于任意一对不同的顶点u,v∈V,若G中存在一条从u->v的边,则在此序列中u在v前面。拓扑排序也可以用来判断一个有向图是否存在环。有两种算法可以求得该序列:1.Kahn算法。其实就是不断的寻找有向图中没有前驱(入度为0)的顶点,将之输出。然后从有向图中删除所有以此顶点为尾的弧。重复操作,直至图空,或者找不到没有前驱的顶点...原创 2018-04-30 19:05:13 · 350 阅读 · 0 评论 -
ST表
用ST表求静态区间最大值ST表不支持修改,预处理时间为nlog(n),但查询时间为O(1)线段树支持修改,预处理时间为nlog(n),但查询时间是log(n)模板例题ST详解:用f[i][j]表示区间 j~j+2^i-1 的最大值(即从j开始,向后2^i次这个区间中的最值)预处理出bin[i]表示2^i,log[i]就表示log2(i)#include<bits/stdc++.h> ...原创 2018-05-07 09:29:30 · 271 阅读 · 0 评论 -
搜索专题(练习题)
T1题面首先我们很容易发现一个操作序列是否合法与操作序列的顺序是无关的,选定操作之后加上阶乘即可。我们从小到大dfs,对于第i次操作我们把序列分成2^(n-i)段,每段长度2^i。我们(用check函数)找到序列中不是连续递增的段,如果这样的段超过2个,这当然不可能,直接退出。没有这样的段就不用操作。有一段的话判断一下交换前后一半之后是否满足要求。有两段的话和一段也很像。#include<b...原创 2018-05-07 09:36:56 · 265 阅读 · 0 评论 -
二维凸包
塞一篇我看得懂的blog 点击打开链接#include<bits/stdc++.h>#define V (to[i])#define debug printf("%d %s\n",__LINE__,__FUNCTION__)#define PP system("pause")#define N 1000010#define NN 2010#define NNN 310#d...原创 2018-06-29 11:52:22 · 299 阅读 · 0 评论