自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

转载 Codeforces 835D

题意:给出一个字符串,字符串的每个字符是1阶回文,若字符串的某个长度为t的子串回文,这个子串的回文阶数是同起点开头长度为⌊t/2⌋的串的回文阶数加1。现在要求统计所有回文阶数对应包含的子串数量 区间DP:以d[l][r]记录ch[l]~ch[r]的子串的回文阶数。如果ch[l~r]回文,d[l][r] = d[l][(l+r-1)>>1]+1 #include <al...

2017-08-03 20:08:00 99

转载 k路求和归并

K路求和归并: 两路归并过程: 1.将两个序列升序排列。 2.将一个序列B的首与另外一个序列A的每一个元素求和,加入到一个优先队列中。 3.依次取优先队列队头,查找队头来自B的哪一个位置,将现在和中的B[n]替换为B[n-1] 时间复杂度O(N*logN) K路归并则进行K-1次两路归并 如果数组长度不同,将长的放到前面可以节约时间(启发式合并) UVA 11997 题意:求K个数组求...

2017-07-31 21:43:00 225

转载 51NOD 1384

#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <set> using namespace std; bool vis[10]; string ch; int len; void dfs(int k,...

2017-07-26 21:54:00 86

转载 CSU 2145

#include <iostream> #include <cstring> #include <cstdio> #include <vector> using namespace std; string gg[10][10]; int g[10][10][2]; bool vis[10][10]; struct st { in...

2017-07-24 21:29:00 107

转载 POJ 3415

#include <algorithm> #include <iostream> #include <sstream> #include <cstring> #include <string> #include <cstdio> #include <vector> #include <queue&g...

2017-07-21 22:31:00 86

转载 后缀数组LCP模板

#include <algorithm> #include <iostream> #include <sstream> #include <cstring> #include <string> #include <cstdio> #include <vector> #include <queue&g...

2017-07-20 20:30:00 140

转载 UVA 11107

#include <algorithm> #include <iostream> #include <sstream> #include <cstring> #include <string> #include <cstdio> #include <vector> #include <queue&g...

2017-07-20 20:24:00 109

转载 HDU 3974

题意:公司里有员工,员工的上司,员工上司的上司...给一个人分配工作,他的直接员工和间接员工都会停下手中的工作一起去做的他的工作,问指定的一个人现在在做的工作。 dfs时间戳处理出每一个人对应的工作时间范围,类比成某个人管辖的区间。dfs序已经将每个人编号,所以区间的最左侧即为这个人自己。然后就将区间映射到线段树上,更新操作即为更新一个人对应的管辖区间,查询则是查询区间最左侧。 #in...

2017-07-20 20:16:00 64

转载 Codeforces 126B

题意:给出一个字符串,要求从中分别找出一个前缀、中缀、后缀,使得他们相等。找出满足要求的长度最大的子串,否则输出Just a legend KMP+Hash。KMP的next数组的本质为模式串的当前位置前缀中,最长匹配的前后缀数量。 那么就枚举串中每一个位置,通过next数组可以得到一个前缀和一个中缀,这样再比较这个前缀和含相同数量字符的后缀是否相等。 时间复杂度为O(n) #incl...

2017-07-17 22:47:00 109

转载 Codeforces 828C

题意:给出n个字符串s,对每一个字符串可以给出m个位置ki,表示可以把字符串填到ki~ki+len(s)上,保证不会冲突,求最后符合条件的字典序最小字符串。 尝试用线段树写了一下 设置一个tag标记,如果区间整个都做过修改,tag为真,下次碰到这个区间后就直接跳过了 #include <iostream> #include <cstring> #include ...

2017-07-17 22:28:00 83

转载 POJ2079 && BZOJ1069

一堆点中选三个点构成最大三角形。对于一个构成的三角形,过三角形顶点作与它的底边平行的线,要找面积最大的三角形,即最大的高,则顶点势必在点集构成的凸包上,所以从点集中选出构成面积最大的三角形的三个点一定来自点集构成的凸包。 #include <stack> #include <cmath> #include <cstdio> #include <c...

2017-07-10 22:18:00 69

转载 旋转卡壳

对踵点对定义: 如果过凸包上的两个点可以画一对平行直线,使凸包上的所有点都夹在两条平行线之间或落在平行线上,那么这两个点叫做一对对踵点。最远点对必然属于对踵点集(结论。可能是构成凸包最长的对角线一定是一对对踵点,不明。。。) 旋转卡壳寻找对踵点的基本思路是: 1.找到凸包最高点与最低点,作水平的一对平行线。规定一个时针方向两条线保持平行沿当前所在点转动。 2.当一条线与凸包的一条边重合时...

2017-07-10 22:13:00 181

转载 凸包—Graham扫描法 && Jarvis March(Gift Wrapping)

Graham扫描法 提要 1.点线位置:利用向量叉积判断点在直线的某一侧 2.极角排序:选定边界上的点(一般为最左下点),按相对该点构成极角的大小排序 3.退化问题:出现多点在同一条直线上时,将距离加入排序 步骤 1.按最左下点进行极角排序 2.选择序列前两个依次入栈A,剩余则从序列末尾开始往前依次入栈B 3.如果栈B非空,每次从栈A中取出两个点 a , b 构成直线ab,从栈B中取出...

2017-07-06 19:19:00 177

转载 枚举全排列

1.next_permutaton生成字典序全排列,要先将数组排序。 #include <algorithm> #include <iostream> using namespace std; char c[3] = {'c','b','a'}; int main() { sort(c, c+3); do{ for(int i ...

2017-07-06 14:38:00 196

转载 POJ1201 && POJ1716 SPFA

差分约束 POJ 1201 题意:给出n个约束条件,每个约束条件为从整数区间 [ ai , bi ]中选出ci个数,问在满足所有约束条件的情况下,选出数的最少个数。 设S[x]表示0~x中总共选出了多少数 所以从给出的约束条件( ai , bi , ci )得到 S[ bi ]-S[ ai-1 ] ≥ ci,同时还隐含条件: 0 ≤ S[ i ] - S[ i - 1 ] ≤ 1 统一...

2017-07-05 20:57:00 70

转载 POJ1364 SPFA

差分约束 题意: 给出n代表一个序列的长度,给出m个约束条件(si , ni , oi , ki),若oi为gt,则序列从位置si~(si+ni)的和大于ki,若oi为lt,则和小于ki。问是否存在这样的序列使得约束条件成立。 转化为最短路问题: 当 oi 为 gt 时,S(si-1) - S(si+ni) ≤ -k-1 当 oi 为 lt 时, S(si+ni) - S(si-1) ...

2017-07-05 11:10:00 81

转载 Bellman-Ford && SPFA

Bellman-Ford Bellman-Ford算法基于边求解最短路,解决单源最短路问题,可以处理含负权边的图,判断是否存在负环。 图上的一条最短路径不超过V-1条边,每次遍历在前一次的基础上操作,是一个迭代松弛的过程。可以把由源点出发到各点的最短路径表示成一棵树,外层的每一次遍历操作就是将树的深度加深一层,内层遍历边执行松弛操作。(松弛:dist[i] = min( dist[...

2017-07-04 09:51:00 56

转载 Dijsktra

贪心原则 1、从源点出发寻找可达的点,更新dist值,标记为已访问 2、从更新过值得点中选最dist值最小且未被访问过的点,寻找可达的未访问点,更新dist值,当前点标记为已访问 3、重复第二步最多n-1次,就能得到源点到各点的最短距离 邻接矩阵实现 时间复杂度O(n^2),n为顶点个数 根据dijsktra的性质,d[j] = min(d[i]+g[i][j], d[j]),所以pa...

2017-07-02 15:27:00 97

转载 单调栈

利用单调栈寻找当前值在数组中的某段作为最小(大)值左可扩展的最大距离 时间复杂度为O(n)。遍历原数组,维护单调栈。以当前数在数组某一段中作为最小值为例: 先找向右可扩展的最远编号,按从前往后的顺序数组中的值进栈,如果新进值大于栈顶元素值,进栈。否则一直删除栈顶元素一直到当前编号可以入栈(大于栈顶元素)。在每个元素出栈的时候,就是每个元素可向右扩展的最远距离的时候,记录下来。找向左扩展最...

2017-07-02 14:40:00 69

空空如也

空空如也

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

TA关注的人

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