随笔分类 -  算法模板

摘要:原题链接 二分图的性质 定理:当且仅当无向图G的每一个回路的次数均是偶数时,G才是一个二分图。如果无回路,相当于任一回路的次数为0,故也视为二分图。 二分图的判定 如果一个图是连通的,可以用如下的方法判定是否是二分图:在图中任选一顶点v,定义其距离标号为0,然后把它的邻接点的距离标号均设为1,接着把 阅读全文
posted @ 2019-09-28 22:37 一块钱的争论 阅读(342) 评论(0) 推荐(1)
摘要:国家集训队曾经发表过的论文总结 国家集训队1999论文集 陈宏:《数据结构的选择与算法效率——从IOI98试题PICTURE谈起》 来煜坤:《把握本质,灵活运用——动态规划的深入探讨》 齐鑫:《搜索方法中的剪枝优化》 邵铮:《数学模型的建立、比较和应用》 石润婷:《隐蔽化、多维化、开放化——论当今信 阅读全文
posted @ 2019-08-05 16:06 一块钱的争论 阅读(549) 评论(0) 推荐(0)
摘要:简介 一、定义 单调栈是一种高效,方便,简单的数据结构,其特点与单调队列类似,满足在栈里的数据呈现单调递增或者递减的特性,用来计算一定区间的值。 二、原理 (1)当新元素在单调性上优于栈顶时(单增栈新元素比栈顶大,单减栈新元素比栈顶小),压栈,栈深+1; (2)当新元素在单调性与栈顶相同(新元素于栈 阅读全文
posted @ 2019-08-05 11:30 一块钱的争论 阅读(315) 评论(0) 推荐(1)
摘要:洛谷模板题 P3379 给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 ST表 基本思路 树的构造 举个栗子 欧拉序 存储第一次出现的位置 使用链式前向星存储树的结构,首先求一棵树的欧拉序,然后根据两点的公共祖先就是欧拉序中(第一次出现时)两点位置区间内的深度最小点, 这一定理转化成RMQ 阅读全文
posted @ 2019-08-03 00:09 一块钱的争论 阅读(475) 评论(0) 推荐(0)
摘要:OI Training 知识体系结构 初级 1.1 C语言基础 1.1.1 C语言程序结构(A+B Problem) 1.1.2 变量,常量,数据类型,输入与输出 1.1.3 条件语句 1.1.4 循环语句 1.1.5 数组 1.1.6 字符数组、字符串 1.1.7 指针 1.1.8 共同体、结构体 阅读全文
posted @ 2019-08-02 19:52 一块钱的争论 阅读(294) 评论(0) 推荐(0)
摘要:int __builtin_ffs (unsigned int x) 返回x的最后一位1的是从后向前第几位,比如7368(1110011001000)返回4。 c++ int n = 1;//1 int m = 8;//1000 cout 阅读全文
posted @ 2019-08-02 15:43 一块钱的争论 阅读(2523) 评论(0) 推荐(2)
摘要:前向星 在了解链式前向星之前,先简单了解下前向星。前向星是一种边集数组,先把每条边按照从小到大的顺序排序,如果起点一样,那么就按照终点从小到大来排序,并记录下每个点为起点在数组中的位置和该点所连边的数量。 $len[i]$表示以$i$为起点的边的条数,hehiad[i]表示以$i$为起点的边在数组中 阅读全文
posted @ 2019-08-01 19:49 一块钱的争论 阅读(345) 评论(0) 推荐(0)
摘要:A题 原CF 438D The Child and Sequence 题意 给一串数字,m次操作,1.区间查询;2.区间取模;3.单点修改 基本思路 考虑到模如果大于区间的最大值,则取模没有意义。若小于则向下查询并修改,考虑到一个数每次取模最多为原数的$1/2$,则可认为修改次数不超过$\log{2 阅读全文
posted @ 2019-07-26 18:11 一块钱的争论 阅读(208) 评论(0) 推荐(0)
摘要:原hdu 2665 Kth number 题意 给$n$个数和$m$次查询,每个查询包含区间$[x,y]$,求区间内第$K$大的数 思路 可持久化线段树,即主席树,第一次建立一个空的线段树,使用$root$下标表示访问第几次时间,数据离散化后。注意下标从1开始。 注意$cnt$可能是乱序的,但是$r 阅读全文
posted @ 2019-07-25 20:46 一块钱的争论 阅读(282) 评论(0) 推荐(0)
摘要:基本思路 两次dfs,第一次逆序,第二次计算连通分量的类别。待完善。 c++ include using namespace std; typedef struct{ int vertex,next; }NODE;NODE nodes[10010]; int end[10010]={0},m,n,i 阅读全文
posted @ 2019-07-06 23:49 一块钱的争论 阅读(215) 评论(0) 推荐(0)
摘要:大数据下秩优化节约50%时间 阅读全文
posted @ 2019-07-05 01:12 一块钱的争论 阅读(254) 评论(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)
摘要:[TOC] KMP算法 基本思想 算法由两部分组成 1. 计算ptr每一位及之前的字符串中,前缀和后缀公共部分的最大长度的next数组 2. 匹配ptr和str,当ptr失配时,利用next数组,实现ptr的最大后移,从而避免不必要的匹配,减少匹配次数 计算next数组 前缀和后缀公共部分的最大长度 阅读全文
posted @ 2019-05-17 12:45 一块钱的争论 阅读(137) 评论(0) 推荐(0)
摘要:```c++ include using namespace std; typedef long long ll; typedef struct{ ll l,r,w,f; }Node; Node nodes[1000000]={0,0,0}; ll x,y,ans,mod,single; void 阅读全文
posted @ 2019-05-16 20:57 一块钱的争论 阅读(326) 评论(0) 推荐(0)
摘要:```c++ include using namespace std; typedef struct{ int l,r,w; }Node; Node nodes[1000000]={0,0,0}; int x,y,ans,mod,single; void build(int l,int r,int 阅读全文
posted @ 2019-05-16 20:12 一块钱的争论 阅读(148) 评论(0) 推荐(0)
摘要:[TOC] DP整理 最长上升子序列 贪心解法ONlogn c++ brr[0]=arr[1][0]; int tmp=0; for(int i=1;ibrr[tmp]) brr[++tmp]=arr[i]; else brr[lower_bound(brr,brr+tmp+1,arr[i]) br 阅读全文
posted @ 2019-05-16 19:10 一块钱的争论 阅读(164) 评论(0) 推荐(0)
摘要:[TOC] 求最小公倍数 辗转相除法 gcd(a,b)= gcd(b,a%b) 求素数 埃式筛 c++ //复杂度O(nloglogn) for(long long i=2;ii,prime[j] 阅读全文
posted @ 2019-05-16 19:09 一块钱的争论 阅读(157) 评论(0) 推荐(0)