ACM专题
*Slime*
这个作者很懒,什么都没留下…
展开
-
网络流(最大流,增广路,为何建反边,Dinic,SAP,二分图匹配,最小割,最大权闭合图)
最大流含义:从源点到经过的所有路径的最终到达汇点的所有流量和。(就是水龙头从一个顶点灌水到另一个顶点处水的最大值)增广路的含义:增广路就是一条从源点到汇点的路,并且带有一个值,表示该增广路的最大流量,该值得大小取决于该增广路中拥有最小流量的边。为什么最大流算法要建立反边?首先有一个这样的图我们跑一边增广路可以得到A→B→C→D那么图就变为但是这很明显不是最大流,最大流应该为2...原创 2019-11-29 22:22:42 · 3236 阅读 · 0 评论 -
RMQ求区间gcd
RMQ模板请看 :https://blog.csdn.net/qq_43333395/article/details/89442824首先来一道航电例题(hdu 5726)题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5726题意: 给一个数组a,大小为n,接下来有m个询问,每次询问给出l、r,定义f[l,r]=gcd(al,al+1,…,...原创 2019-05-07 10:00:54 · 657 阅读 · 0 评论 -
状态压缩
首先是状态压缩涉及到的一些小知识点:判断一个数字x二进制下第i位是不是等于1。方法:if(((1<<(i−1))&x)>0)将1左移i-1位,相当于制造了一个只有第i位上是1,其他位上都是0的二进制数。然后与x做与运算,如果结果>0,说明x第i位上是1,反之则是0。将一个数字x二进制下第i位更改成1。方法:x=x|(1<<(i−1))证明方...原创 2019-04-25 17:31:14 · 9421 阅读 · 0 评论 -
马拉车 Manacher
思想请先看:http://www.cnblogs.com/grandyang/p/4475985.html这位大佬的。(等过几天在总结一下)找出类似"abba"和“abcba”#include <bits/stdc++.h>using namespace std;typedef long long ll;const int MAXN=110010;char Ma[M...原创 2019-05-05 18:17:27 · 108 阅读 · 0 评论 -
滑动窗口求最值
洛谷题目链接:P1886 滑动窗口https://www.luogu.org/problemnew/show/P1886目描述现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。例如:The array is [1 3 -1 -3 5 3 6 7], and k = 3.输入输...原创 2019-04-29 22:28:43 · 644 阅读 · 0 评论 -
KMP+扩展KMP
KMPKMP算法要解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问题(或者是出现次数等的问题)。说简单点就是我们平时常说的关键字搜索。首先,对于这个问题有一个很单纯的想法:从左到右一个个匹配,如果这个过程中有某个字符不匹配,就跳回去,将模式串向右移动一位。这有什么难的?上面的程序是没有问题的,但不够好!(想起我高中时候数字老师的一句话:我不能说你错,只能说你不对~~~)...原创 2019-04-29 20:22:50 · 1570 阅读 · 1 评论 -
单调栈+RMQ
单调栈+RMQ题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5696题意给出一个长度为n(1 <= n <= 100000)的序列,区间权值为区间最大值乘以区间最小值,输出长度为1到n的区间的最大权值。题解先利用单调栈算出以a[i]为最小值的最大区间延伸,设该区间宽度为L,则更新ans[L](这里用到st表查询该区间最大值),最...原创 2019-04-22 11:29:27 · 748 阅读 · 0 评论 -
RMQ
RMQRMQ(Range Minimum/Maximum Query),即区间最值查询,这是一种在线算法,所谓在线算法,是指用户每次输入一个查询,便马上处理一个查询。RMQ算法一般用较长时间做预处理,时间复杂度为O(nlogn),然后可以在O(1)的时间内处理每次查询。下面我们从一个实际问题来解释RMQ我们假设数组arr为:1,3,6,7,4,2,5我们设二维数组dp[i][j]表示从第i...原创 2019-04-22 00:31:33 · 288 阅读 · 0 评论 -
字典树
仿照大佬博客写出此文,方便日后复习字典树相关知识点:https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html1.什么是字典树?首先字典树是一种数据结构,用于处理大量字符串.,优点在于利用字符串的公共前缀,在存储时节约存储空间,并在查询时最大限度的减少无谓的字符串比较.2.字典树有什么用?1.以最节约空间的方式存储大量字符串.且存好后...原创 2019-04-13 21:31:26 · 467 阅读 · 0 评论 -
单调栈
关于单调栈的简单介绍请看这篇博客:https://blog.csdn.net/liujian20150808/article/details/50752861总结:一个元素向左遍历的第一个比它小的数的位置就是将它插入单调栈时栈顶元素的值,若栈为空,则说明不存在这么一个数。然后将此元素的下标存入栈,就能类似迭代般地求解后面的元素模板:stack<int >S; for(i...原创 2019-04-21 00:47:49 · 209 阅读 · 0 评论 -
一些数据结构的书写格式(优先队列,map,)
优先队列以结构体为例struct Time{ int start, end;};使用优先队列时,如果需要对Time中的start从小到大排序,有两种方法:priority_queue<Time> pq;一.在结构体外重载结构体小于运算符:bool operator <(const Time& a,const Time& b){ r...原创 2019-04-09 17:51:28 · 862 阅读 · 0 评论 -
图论(最短路,最小生成树,并查集)
判断环:1.tarjan算法tarjan算法,一个关于图的联通性的神奇算法。基于DFS(迪法师)算法,深度优先搜索一张有向图。!注意!是有向图。根据树,堆栈,打标记等种种神(che)奇(dan)方法来完成剖析一个图的工作。而图的联通性,就是任督二脉通不通。。的问题。了解tarjan算法之前你需要知道:强连通,强连通图,强连通分量,解答树。强连通(strongly connected):...原创 2019-04-01 23:24:09 · 610 阅读 · 0 评论 -
欧几里得算法&扩展欧几里得
本文包括:1.几里德算法 递归实现2.扩展欧几里德算法 递归实现…实际上就是把别人总结的,我认为有助于自己理解的内容copy过来,再加上几句自己的理解。欧几里得算法欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数 gcd(a,b)。基本算法:设 a = qb + r,其中a,b,q,r都是整数,则 gcd(a,b) = gcd(b,r),即 gcd(a,b) = gcd(b...原创 2019-03-27 23:07:38 · 354 阅读 · 0 评论 -
C. Mahmoud and Ehab and the xor(有意思的位运算)
C. Mahmoud and Ehab and the xor题目链接:http://codeforces.com/problemset/problem/862/C题目大意:给你两个数n和x,问存不存在n个互不相同的非负整数满足异或和为x,如果存在输出任意一种构造方法:①如果n=1,直接输出x,如果n=2 && x==0输出NO(这是唯一一个无法构造的情况)②这n个数分...翻译 2019-03-15 23:53:22 · 179 阅读 · 0 评论 -
DP
D-猪钱罐题目链接:https://vjudge.net/contest/279505#problem/D在 ACM 能够开展之前,必须准备预算,并获得必要的财力支持。该活动的主要收入来自于 Irreversibly Bound Money (IBM)。思路很简单。任何时候,某位 ACM 会员有少量的钱时,他将所有的硬币投入到小猪储钱罐中。这个过程不可逆,因为只有把小猪储钱罐打碎才能取出硬币。...原创 2019-03-14 00:28:01 · 195 阅读 · 0 评论 -
浅谈概率DP
浅谈概率DP经典例题: 一个软件有s个子系统,会产生n种bug。 某人一天发现一个bug,这个bug属于某种bug,发生在某个子系统中。 求找到所有的n种bug,且每个子系统都找到bug,这样所要的天数的期望。 需要注意的是:bug的数量是无穷大的,所以发现一个bug,出现在某个子系统的概率是1/s, 属于某种类型的概率是1/n。解法:dp[i][j]表示已经找到i种bug,并存在于j个子系...原创 2019-02-13 14:24:02 · 663 阅读 · 0 评论