
算法
文章平均质量分 57
Taunt_
这个作者很懒,什么都没留下…
展开
-
手写队列,栈(STL党必备)
//作为忠实的STL党,队列和栈经常会影响速度,所以可通过手写struct来代替STL 其实也不会卡的很厉害,尽量写和以前一样的防止出错queuestruct queue{ const int maxn = 100000 + 100; int l = 0,r = 0,a[maxn]; void push(int x){ a[++r] = x; }原创 2017-11-09 08:09:53 · 4304 阅读 · 5 评论 -
蒟蒻复习之—–前缀和和差分
前缀和1.一维前缀和对于数组A[],前缀和SUM[i]表示的就是A[1]+A[2]+…+A[i]。int init() { for(int i = 1; i <= n; i++) sum[i] = sum[i-1] + a[i];}int get(int l, int r) { return sum[r] - sum[l-1];}2.二维前缀和对于二维数组,前缀和SUM[i][原创 2017-11-08 14:35:08 · 3007 阅读 · 0 评论 -
蒟蒻复习之—–对拍
作为蒟蒻,对拍这种东西有点高大上,但还是要会的,说不定就会用到~~~对拍器#include<windows.h>int main() { int n = 100; while(n--) { system("init > 1.in "); //注意不要用data,容易搞成date出问题 system("1 < 1.in > 1.out");原创 2017-11-07 19:26:15 · 410 阅读 · 0 评论 -
蒟蒻复习之—–数学
//以下是我的一些模板的整理 //只有板子,没有原理素数1.素数判定O(根号n)bool prime(int x) { if(x == 0 || x == 1) return false; for(int i = 2; i * i <= x; i++) { if(x % i == 0) return false; } return true;}2.原创 2017-11-06 15:31:44 · 446 阅读 · 0 评论 -
蒟蒻复习之—–二进制
二进制运算可以用来优化很多东西原创 2017-11-05 15:35:57 · 333 阅读 · 0 评论 -
蒟蒻复习之—–STL
见Menci blog ~~~~原创 2017-11-02 16:48:05 · 294 阅读 · 0 评论 -
蒟蒻复习之-----二分
蒟蒻复习之—–二分//这两天做了几道二分题 //感觉对二分的理解更加深刻了模板int l = 0, r = maxn;while(l <= r) { int mid(l + r) >> 1; if(pd(mid)) { ans = mid; l = mid + 1; } else r = mid - 1;}关键在于pd()函数的写原创 2017-10-28 21:09:37 · 365 阅读 · 0 评论 -
蒟蒻复习之-----LCA
蒟蒻复习之—–LCA//这两年考LCA考的特别多,QAQ //重要不重要自己体会1.Tarjan都说tarjan的好写,一直没看过 今天看了看挺简单的,比倍增的好写多了 //个人比较喜欢打多个函数,代码有点长模版题#include#include#includeusing namespace std;const int maxn = 500000 + 100原创 2017-10-24 13:05:33 · 305 阅读 · 0 评论 -
蒟蒻复习之-----Tarjan
蒟蒻复习之—–Tarjan//强连通图的判断方法 //作为复习篇不讲原理[noip2015]信息传递 //就是找一个最小环 //标准的模板题(虽然有很多解法)#include<iostream>#include<cstdio>#include<cstring>#include<stack>using namespace std;const int maxn = 200000 + 100原创 2017-10-23 21:22:07 · 283 阅读 · 0 评论 -
[luogu2024] 食物链
链接题目描述动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B吃 C,C 吃 A。现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这 N 个动物所构成的食物链关系进行描述:第一种说法是“1 X Y”,表示 X 和 Y 是同类。第二种说法是“2 X Y”,表示 X 吃 Y 。此人对 N 个动物原创 2017-10-22 20:57:57 · 441 阅读 · 0 评论 -
蒟蒻复习之-----最小生成树
蒟蒻复习之—–最小生成树//又一基础算法被深究QAQ一般有两种方法,但考虑到博主只会kruskal,就不说Prim了kruskalkruskal是基于贪心的,对所有边sort,再从小加边 模板.#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int原创 2017-10-21 21:29:52 · 312 阅读 · 0 评论 -
蒟蒻复习之-----并查集
蒟蒻复习之—–并查集//前两天做了个差分约束的题,结果题解说权值并查集也能做题目 //然后就恶补了下并查集,想到之前一直没想明白的食物链就头疼并查集概要 并查集作为算法竞赛中较为简单、易用的数据结构,适用于由时序并入的动态集合查找。并查集中的两个主要操作就是“合并集合”与“查找集合”算法 用集合中的某个元素来代表这个集合,该元素称为集合的代表元。 一个集合内的所有元素组织成以代表元为根的树原创 2017-10-21 20:52:08 · 373 阅读 · 0 评论 -
蒟蒻复习之-----SPFA,dijkstra
蒟蒻复习之—–SPFA,dijkstra//好把这个太简单了 //作为复习篇不讲原理dijkstra//表示很少用,即使他要比spfa稳定 附赠代码模版题#include<iostream>#include<cstdio>#include<queue>#include<cstring>using namespace std;const int maxn = 500000 + 100;c原创 2017-10-13 22:52:26 · 429 阅读 · 0 评论 -
蒟蒻复习之-----Floyd
蒟蒻复习之—–Floyd暴力无解算法 (入门必备) //然而我发现这个简单的算法还有很多用法 //作为复习篇不讲原理图的要求:既可以是无向图也可以是有向图,边权可以为负,但是不能存在负环 复杂度为O(n^3)原理(dp思路)f[i][j] = f[i][k] + f[i][k]代码void floyd() { for(int k = 1; k <= n; k++) {原创 2017-10-10 22:20:48 · 384 阅读 · 0 评论