自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 dfs序题集

dfs序可以维护一个子树内的信息需要记录dfs进的时间以及所有子树都遍历完的时间void dfs(int u, int fa){ L[u] = ++id; for(int i = head[u]; ~i; i = e[i].next) { int v = e[i].to; if(v == fa) continue; dfs(v, u); } R[u] = id;...

2018-10-18 18:20:02 318

原创 矩阵乘法题集

矩阵 A×B 模板题。感觉写完结构体就可以为所欲为了。#include<bits/stdc++.h>#define REP(i, a, b) for(register int i = (a); i < (b); i++)#define _for(i, a, b) for(register int i = (a); i <= (b); i++)using ...

2018-10-14 14:35:35 4058

原创 同余问题题集

青蛙的约会(解不定方程)设走了t步,则第一只青蛙跳了,第二只是则有那么有所以可以列出不定方程 其中t和k为未知数。用拓展欧几里得求解。求完之后判断一下有没有解然后x乘上K /gcd就是真正的解然后b /gcd可以作为模,把x调整成最小正整数解最后注意开long long,数论题大多都要开long long#include<bits/stdc++.h&...

2018-10-12 20:29:25 2560

原创 组合数学题集

bzoj 1008逆向思维。一共有m^n种状态我们考虑不越狱的情况第一个人有m种选择,后面的所有人均是m-1种选择那么方案数就是 m^n - m * (m - 1) ^ (n - 1) 快速幂就好其实不难,自己不要怕,心理不要有障碍#include<bits/stdc++.h>#define REP(i, a, b) for(register int i =...

2018-10-12 19:56:15 950

原创 约数总结

bzoj 1053比较经典的一道题。首先要观察出一些结论(1)质数不超过10个。前十个质数相乘已经超过最大值。(2)质数的指数是递减的。如果不是,可以把指数小的和大的交换一下,答案更小。然后就搜索就好了。这是一类数论+搜索的题目,要从题目看出一些剪枝,然后搜索即可。#include<bits/stdc++.h>#define REP(i, a, b) f...

2018-10-11 22:51:27 202

原创 质数总结

poj 2689要对数据敏感,L和R很大,但是L-R很小。可以在(R - L)loglogR的时间内用筛法筛出所有质数。然后扫一遍就好了。有些细节要注意,有些地方会爆int,0和1不能算进去。#include<cstdio>#include<cstring>#include<vector>#define REP(i, a, b) fo...

2018-10-11 18:32:06 325

原创 二分题集

「一本通 1.2 练习 2」扩散显然联通块的个数是随时间越来越少的。所以可以二分时间。经过一波运算,可以得出两点需要联通的时间是(abs(x[i] - x[j]) + abs(y[i] - y[j]) + 1) / 2然后每次用并查集维护一下联通分块就好了。第一次写这种开结构体的并查集,感觉很酷炫。#include<bits/stdc++.h>#defi...

2018-10-10 19:21:40 465

原创 三分算法总结

和二分非常类似的一个算法,与二分不同的是二分是单调的,而三分是一个先增后减或者先减后增三分可以求出峰值。注意三分一定是严格单调的,不能有相等的情况。不过貌似只有求函数最值才用到这个东西,没有二分应用范围那么广。「一本通 1.2 例 3」曲线画画图可以发现,满足先减后增图和雅礼集训里Merchant那道题非常的像,只不过那道题是最大值,可以用二分。这道题是最小值,用三...

2018-10-10 18:17:21 326

原创 Manacher(最大回文字串)

很好的讲解注意两端的字符要不同,同时数组要开大一些【Manacher】最长回文子串#include<bits/stdc++.h>#define REP(i, a, b) for(register int i = (a); i < (b); i++)#define _for(i, a, b) for(register int i = (a); i <= (b...

2018-10-10 17:09:15 589

原创 2018 noip 备战日志

我是写给自己看的…… Day1 10.8今天开始停晚修课了,开始认真备战考试了。今天晚上效率不错,竟然不会累,应该是平时一直这个时间写作业大脑高度集中,现在换了编程也一样可以集中到这个状态 一些感悟:(1)不认真静下来研究一个题解,而是看n多个题解,浪费时间(2)行和列傻傻分不清,可以画图清晰一些。(3)要对自己自信,不要一看到题就搜题解。多自己思考问题,多用笔...

2018-10-08 22:34:48 431

原创 对顶堆总结

大佬总结这个玩意是可以动态维护第k大的值(比如中位数)每次操作logn 我们要维护这两个堆。我们可以以小根堆的堆顶为“分界线”如果大于它,就加入小根堆反之加入大根堆如果两个堆的个数相差超过1,就把多的那个堆的堆顶弹出来,加入另一个堆的堆顶如果要求中位数的话,显然是两个堆中个数多的那一个的堆顶,这很容易理解。 加入的操作是这样priority_queue...

2018-10-08 19:32:17 3466

原创 Hash大法

内容参考《算法竞赛进阶指南》之前集训的时候听老师讲过,字符串题目中,hash一般不是正解,但是是一个优秀的暴力,可以拿比较多的部分分。hash涉及内容很多,这里只讨论字符串hash可以把字符串看成一个131进制位数,然后用ull储存,大过2的64次方后自动取模。这样的话hash值相等的话可以认为两个字符串是一样的(极少概率不一样)所以对于一个字符串,我们可以用O(n)的时间内算...

2018-10-07 23:06:11 545

原创 最小表示法

poj 1509不知道为什么用算法竞赛进阶指南上的那个代码交上去会WA#include<cstdio>#include<cstring>#include<algorithm>#define REP(i, a, b) for(register int i = (a); i < (b); i++)#define _for(i, a, b) f...

2018-10-07 22:42:30 190

原创 KMP算法题集

模板caioj 1177 KMP模板#include<bits/stdc++.h>#define REP(i, a, b) for(register int i = (a); i < (b); i++)#define _for(i, a, b) for(register int i = (a); i <= (b); i++)using namespace s...

2018-10-07 21:44:35 1224

原创 分块总结

大佬总结 数列分块入门 1#include<bits/stdc++.h>#define L(i) (bl[i] - 1) * blo + 1#define R(i) bl[i] * blo#define REP(i, a, b) for(register int i = (a); i < (b); i++)#define _for(i, a, b) for(...

2018-10-06 22:34:53 161

原创 2018 雅礼国庆集训

Merchant    有n个物品,第i个物品有两个属性ki , bi,表示它在时刻x的价值为ki × x + bi . 当前处于时刻0,你可以选择不超过m个物品,使得存在某个整数时刻t, t ≥ 0,你选择的 所有物品的总价值大于等于S. 给出S,求t的最小值。   很容易想到几个物品加起来的时候,价值是一个一次函数(合并同类项)   然后画一下图可以发现(然而我考试时并没有发现),...

2018-10-06 21:14:16 1128

原创 二分图总结

大佬总结通俗有趣的讲解二分图判定(染色法)poj 2492#include<cstdio>#include<cstring>#define REP(i, a, b) for(register int i = (a); i < (b); i++)#define _for(i, a, b) for(register int i = (a); i &...

2018-10-04 21:48:22 271

原创 贪心总结

之前的总结区间相关问题NOIP2018提高组金牌训练营——贪心算法专题 #10005. 「一本通 1.1 练习 1」数列极差小的先处理,最后肯定最大大的先处理,最后肯定最小两个优先队列维护即可#include<cstdio>#include<queue>#include<functional>#define REP(i, ...

2018-10-04 19:21:01 172

原创 Tire树总结(模板+例题)

题目来自《算法竞赛设计指南》 Tire树是一种可以快速查找字符串的数据结构模板#include<cstdio>#include<algorithm>#include<cstring>#define REP(i, a, b) for(register int i = (a); i < (b); i++)#define _for(i,...

2018-10-02 21:19:24 2429 1

原创 2018 noip 考前临死挣扎

基础算法       倍增       贪心        分块       二分       三分数据结构       线段树       对顶堆数学        质数        约数        同余        组合        矩阵乘法图论       二分图判定以及最大匹配字符串       Tire树...

2018-10-02 16:04:12 498

原创 树的直径题集

poj 1985(模板题)先随便找个点dfs一次找到距离最远的点,再从那个点再同样dfs一次,那个点到其他点最长的距离即为树的直径不过这种方法不适用于有负权边#include<cstdio>#include<cmath>#include<algorithm>#include<vector>#include<cstring&...

2018-10-02 11:32:52 264

原创 LCA题集

点的距离(模板题)树中两点间的距离就是d[u] + d[v] - 2 * d[lca(u, v)]#include<bits/stdc++.h>#define REP(i, a, b) for(register int i = (a); i < (b); i++) #define _for(i, a, b) for(register int i = (a); i &...

2018-10-02 09:53:40 435

原创 线段树总结

大牛线段树总结,非常棒 模板题洛谷 P3372 【模板】线段树 1#include<cstdio>#define l(k) (k << 1)#define r(k) ((k << 1) + 1)#define REP(i, a, b) for(int i = (a); i < (b); i++)#define _for(i, a,...

2018-10-01 20:29:10 166

原创 倍增算法总结 ( 含RMQ模板)

部分题目来自《算法竞赛设计进阶》 问题      给定一个长度为n的数列A,有m个询问,每次给定一个整数T,求出最大的k,满足a[1],a[2]……a[k]的和小于等于T(不会打sigma)       第一反应是二分,这个时候的复杂度是logn       还有第二种解法,用倍增的思想,复杂度为logk(所求答案)。显然倍增要好很多。我讲讲倍增。       如果是暴力的...

2018-10-01 08:29:54 1779

空空如也

空空如也

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

TA关注的人

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