模板
文章平均质量分 75
GocNeverGiveUp
这个作者很懒,什么都没留下…
展开
-
ZOJ 4110 Strings in the Pocket(Manacher -- 马拉车)
https://vjudge.net/contest/299247#problem/K分类讨论其中一种情况是这样的,求字符串中所有回文子串的数目Manacher是求字符串最长回文子串的算法,在求解过程中会记录一个len数组,保存以每个字符为中心点的回文串最大长度(此长度包含‘#’),我们利用这个len数组,很容易求得以每个字符为中心的回文串数目(len / 2),加起来就是要求的回文子...原创 2019-05-03 20:48:09 · 165 阅读 · 0 评论 -
ZOJ 3933 Team Formation(KM最大权)
https://vjudge.net/contest/293912#problem/G最大权匹配简单题,刚学最大权不太熟悉导致不太会用,。这道题把男生点权设为0,女生设为1,初始边权设为1就能做了KM只对有权值的边进行匹配,所以如果边权为0无法控制最后计算的时候再减去配对成功数目即可#include<iostream>#include<cstring&...原创 2019-04-11 11:19:32 · 137 阅读 · 0 评论 -
POJ 2117 Electricity (去点后的联通块数 tarjan终极模板)
https://vjudge.net/problem/POJ-2117tarjan终极模板solve():求桥solve1():求割点solve2():求去掉一个点后联通块数#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#inc...原创 2019-04-01 21:11:41 · 129 阅读 · 0 评论 -
HDU 3605 Escape(最大流+状压缩点 / 二分图多重匹配)
https://vjudge.net/problem/HDU-3605这道题直接最大流就爆了,蠢的我没算复杂度,后来回过神时间复杂度是O(V^2*E)...\百度正确做法:状压缩点,因为最多只有十个星球,对于每个人他都有至多1024(2^10)种可能的选择,因此可以把这1e5个点缩成1024个点,点权重复的用从源点到该点的流量进行管理,有几个点就设置流量为几,啊好神奇,顺便学一下二分图多重...原创 2019-04-06 21:30:10 · 149 阅读 · 0 评论 -
HDU 1269 迷宫城堡(强连通图基础)
题目链接:https://vjudge.net/problem/HDU-1269学习博客:https://blog.csdn.net/qq_34374664/article/details/77488976如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量(str...原创 2019-03-27 18:14:00 · 158 阅读 · 0 评论 -
HDU 2063 过山车(Hopcroft-Karp(O(V^(1/2)*E)) Vector+链式前向星)
这个算法比匈牙利算法快很多,然而网上没有具体的实现讲解。题目链接:https://vjudge.net/problem/HDU-2063先定义x方点,y方点为二分图中不同的两方点。实现过程:1.将所有x方点中未盖点全部加入队列。2.进行广搜,找出短小的可增广路。具体过程如下: 1>每次进行访问时,找到y方点中没有标号的点,将它的标号设为x方点的标号+1...原创 2019-04-05 21:43:27 · 145 阅读 · 0 评论 -
HDU 2063 过山车(二分图匹配邻接矩阵+邻接表 匈牙利算法 O(VE))
二分图最大匹配匈牙利算法,算是最简单的二分图入门算法了通过递归实现匹配信息的不断更新讲解博客:https://blog.csdn.net/acmman/article/details/38421239题目链接:https://vjudge.net/problem/HDU-2063邻接矩阵+邻接表#include<iostream>#include<cstr...原创 2019-04-05 20:44:49 · 337 阅读 · 0 评论 -
LightOJ 1074 Extended Traffic(SPFA判负环)
https://vjudge.net/problem/LightOJ-1074手动把和负环相连的点设置为答案为?,因为无限循环负环必然可以使得奖励为负数#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector>...原创 2019-03-23 21:23:13 · 191 阅读 · 0 评论 -
POJ 1236 Network of Schools(强连通 + 缩点)
裸题,如何通过加最少的边把一个图变成强连通图步骤:1.求原图构成几个强连通图2.把每一个强连通图视为一个点,进行缩点操作3.记录每一个点的入度和出度之和,max(出度, 入度)就是最终答案#include<iostream>#include<cstring>#include<cstdio>#include<algorithm&g...原创 2019-03-30 21:33:41 · 94 阅读 · 0 评论 -
POJ 3974 Interesting String (Manacher马拉车模板)
#include <cstdio>#include <iostream>#include <cstring>using namespace std;const int maxn = 1000005;char str[maxn];char temp[maxn*2];int l[maxn*2];int cas;void malache(char ...原创 2019-03-23 19:12:27 · 99 阅读 · 0 评论 -
POJ 3159 Candies(差分约束 dijkstra堆优化)
利用最短路的松弛特性,保证了差分约束中的B <= A + c,即d[v] <= d[u] + w,因此建立从A--B的一条边,边权为c即可,最终求从1-n的最短路即符合所有情况的最小总和,同理可以用最长路解决差分约束问题什么是差分约束: https://www.cnblogs.com/zhangmingcheng/p/3929394.htmldijkstra+优先队列快很多...原创 2019-03-23 16:12:51 · 193 阅读 · 0 评论 -
POJ 3020 Anntenna Placement (经典二分图)
https://cn.vjudge.net/contest/68127#problem/H二分图先把每个城市按照出现次序标号,从1-ct,之后把二分图建成上限为ct,因为二分图的XY部都包含且仅包含ct个点,这里必须建立双向边,因为如果去点建边很有可能受限制导致两个原本匹配的城市不在一个图中,这样最后结果/2就是配对成功数,因为每条边都建了两次最后最小覆盖 = ct - 配对结果 / ...原创 2019-04-11 20:12:09 · 95 阅读 · 0 评论 -
HDU 1054 Strategic Game (最小顶点覆盖 = 最大匹配数)
https://cn.vjudge.net/contest/68127#problem/I用二分图解决最小顶点覆盖的问题图G的顶点覆盖是一个顶点集合V,使得G中的每一条边都接触V中的至少一个顶点。我们称集合V覆盖了G的边。最小顶点覆盖是用最少的顶点来覆盖所有的边。顶点覆盖数是最小顶点覆盖的大小所以这是一道模板类型的题,通俗讲就是用最少的点保证所有边都与这些点相连所谓用二分图解决,就...原创 2019-04-11 21:11:44 · 202 阅读 · 0 评论 -
HDU 1151 Air Raid (最小路径覆盖数 = 顶点数 - 最大匹配数)
https://cn.vjudge.net/contest/68127#problem/J最小顶点覆盖的孪生问题,如何选择最少的路径使得选中的路径经过图中所有顶点一般都是单向无环图,这样比较容易建立二分图,,,所以直接建立二分图即可,这样就可以进行求解,证明不论最小顶点覆盖 = 最大匹配数最小路径覆盖 = n(定点数) - 最大匹配数#include<iostrea...原创 2019-04-11 21:42:19 · 188 阅读 · 0 评论 -
POJ 1182 食物链 (带权并查集写法)
https://vjudge.net/problem/POJ-1182当个带权并查集模板吧,解决问题的关键在于在向量之间确立联系,并且保证这种联系符合向量运算法则#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vect...原创 2019-04-18 22:14:59 · 172 阅读 · 0 评论 -
ZOJ 3772 Calculate the Function(线段树+矩阵乘法)
https://vjudge.net/contest/294593#problem/F这道题是把相邻矩阵的乘积用线段树保存了,后面重复查询的时候节省了很多时间,其实难点在于问题的转化和矩阵乘法的模拟上,线段树方面用到的是很简单区间更新问题。#include<iostream>#include<cstring>#include<cstdio>#i...原创 2019-05-02 19:48:18 · 265 阅读 · 0 评论 -
POJ 2739 Sum of Consecutive Prime Numbers (尺取法)
https://vjudge.net/problem/POJ-2739之前就做过一道尺取的题,完全没感觉,多找几道做一下尺取法还是很重要的一个思想,一直用头尾两个指针进行维护更新#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#inclu...原创 2019-04-22 22:11:04 · 129 阅读 · 0 评论 -
POJ 2594 Treasure Exploration(最小路径覆盖 传递闭包)
最小路径覆盖 == 顶点数 - 配对数,此时每个顶点只能经过一次,若是经过一个点多次,例如下面博客所介绍的,当路径相交的时候,应该进行一次传递闭包处理,也就是跑一遍Floyd再进行最大匹配讲解博客:http://www.cnblogs.com/ka200812/archive/2011/07/31/2122641.html题目链接:https://vjudge.net/problem/PO...原创 2019-04-14 20:56:54 · 180 阅读 · 0 评论 -
URAL 1099 Work Scheduling (一般图最大匹配带花树)
https://vjudge.net/problem/URAL-1099题意:给定inf组人,给定的两个人可以在一组工作,问最多可以有多少人一起工作,并输出分组情况不能强行分成二分图的话,就是一般图匹配的模板题了二分图是能够把图完全分成两部分的图,进行最大匹配的时候比较简单,一般图匹配的时候会出现奇圈这个时候需要用到带花树算法(好听)进行一般图的最大匹配并不完全理解原理,只是会...原创 2019-04-12 21:06:18 · 187 阅读 · 0 评论 -
HDU 3829 Cat VS Dog(最大独立集 = 顶点数 - 最大匹配数 = 最小路径覆盖)
https://vjudge.net/problem/HDU-3829最大独立集定义:选出一些顶点使得这些顶点两两不相邻,则这些点构成的集合称为独立集。找出一个包含顶点数最多的独立集称为最大独立集,求一个图的最大独立集基本是NP问题,但是二分图借助性质可以轻易求解也就是说删去最少的顶点,使得图中剩下的所有顶点互不相邻,剩下的图中顶点数就是最大独立集最大独立集 = n(顶点数) - 最小...原创 2019-04-12 19:31:40 · 233 阅读 · 0 评论 -
POJ 2112 Optimal Milking(最大流 + 二分 + Floyd)
这道题也做了好久首先很容易想到的是通过二分查找最大值,然而还是不会二分,但是这次多了一个模板没想到的是可以通过Floyd进行路径优化使得所有路径是最短路,这点没有发现,对于路径问题还是不够敏感最后需要注意作图的严谨性,一定要在纸上归纳清楚了再下手,这次源点和汇点连错了,结果天差地别,de了半天的bug加油原创 2019-04-15 22:00:49 · 121 阅读 · 0 评论 -
POJ 2289 Jamie's Contact Groups(二分+最大流)
http://poj.org/problem?id=2289二分流入汇点的流量,保证最小化最大值,但是二分真是个很严重的问题,哎直接把两个AC代码挂上吧,硬刚是刚不过了,会用就行了。。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#in...原创 2019-04-15 19:57:44 · 388 阅读 · 0 评论 -
HDU 2255 奔小康赚大钱 (二分图最大权匹配 KM)
讲解博客:https://www.cnblogs.com/logosG/p/logos.htmlhttp://www.cnblogs.com/wenruo/p/5264235.html题目链接:https://cn.vjudge.net/contest/68127#problem/P二分图最大权,从X部的点到Y部会有一个匹配权值,我们要求所有权值的最大和,过程上面讲的很清楚了给一个...原创 2019-04-08 19:58:35 · 133 阅读 · 0 评论 -
POJ 3177 Redundant Paths(边双连通分量模板)
边双连通分量:从图中任意一个点到另外一个点都有>1条可行路,即把原图中的桥全都去掉以后,剩下的连通分支都是边双连通分支求法:把去掉桥后的双连通子图缩成一个点,最少需要加上(leaf + 1)/ 2条边可以使得其变成双连通子图,其中leaf为叶子节点个数。https://vjudge.net/problem/POJ-3177#include<iostream>#in...原创 2019-04-02 19:40:05 · 248 阅读 · 0 评论 -
POJ 1273 + HDU 3549(Edmods_Karp)(基础最大流)
https://cn.vjudge.net/problem/POJ-1273https://vjudge.net/problem/HDU-3549昨天又被lls训了,哎我们队没人学过图论,给我一个月时间搞一搞,搞起来跟着bin巨的板子来的http://www.cnblogs.com/kuangbin/archive/2011/07/26/2117636.html简单最大流的暴力...原创 2019-03-18 20:16:02 · 205 阅读 · 0 评论 -
HDU 5855 Less Time,More profit(最大权闭合子图+二分+Dinic模板最大流)
先介绍一个定义,最大权闭合子图:https://www.cnblogs.com/dilthey/p/7565206.html证明不究(反正得忘),会用就行:解题流程:①先记录整个图中,所有正点权值的和;②建立对应流网络,求最大流,最大流在数值上等于最小割,故我们得到了流网络的s-t最小割;③“所有正点权值的和”减去“s-t最小割”,即得最大权闭合子图的权值和。其中建图的时候...原创 2019-03-22 12:46:59 · 146 阅读 · 0 评论 -
最小公倍数
最大公约数--欧几里得算法int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } 最小公倍数,即两个数乘积除以最大公约数,可以理解为其中一个数除以最大公约数,这样两个数的最大公约数就是1,其最小公倍数就是两个数的乘积HDU - 1108 最小公倍数#include<iostream> #inc...原创 2018-04-20 16:58:59 · 249 阅读 · 0 评论 -
数据类型取值范围
unsigned int 0~4294967295 int -2147483648~2147483647 unsigned long 0~4294967295long -2147483648~2147483647long long的最大值:9223372036854775807long long的最小值:-9223372036854775808unsigned long lon...原创 2018-04-20 16:38:14 · 152 阅读 · 0 评论 -
HDU 3032 (Lasker's Nim)
取走--分割博弈,第一次见到,利用sg函数求解对于一堆石子,用sg函数的话。sg【0】=0 sg【1】=1石子数为 2 ,每次可取 0 ,1,个,还可以分解为(1,1)(0,2),结果都为0(分解为相同的和有0的结果都为0,不影响结果,故以后不写),根据nim规律 mex(2)=( 0 , 1 ) = 2;石子数为 3 ,每次可取 0 , 1 , 2 个,还可以分解成 (1,2),结果为sg [...原创 2018-05-02 15:18:22 · 229 阅读 · 0 评论 -
POJ 1200 Crazy Search (初识hash / rabin karp 算法)
POJ - 1200两个学hash的ppt挺好:hash习题集, hash种类总结早就听说hash很厉害,这次wf也有用到hash的地方,今天英语课找了一个hash水题,这个思路还真的是挺强,将字符串转化成进制数,其中出现过多少字符就转化成多少进制,可以保证每一个字串对应的数唯一,然后hash会比直接判断快不少,一道精妙的水题#include<iostream>#include<...原创 2018-04-24 19:33:48 · 159 阅读 · 0 评论 -
SDNUOJ 1340.Jason's Lesson(矩阵快速幂)
SDNUOJ 1340感觉递推式很容易得到,类似利用矩阵快速幂求解斐波那契数列,知道转变前的矩阵和转变后的矩阵,只要稍加修改就是了模板一样的,递推的矩阵是base = {a, b, 1, 0}; 代码:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#...原创 2018-04-24 18:26:52 · 187 阅读 · 0 评论 -
欧拉函数线性筛(模板)
关于欧拉函数筛法,之前一直用的O(n ^2)算法phi[1] = 1;//边打表边筛选 for(int i = 2; i < 1005; i ++)phi[i] = i; for(int i = 2; i < 1005; i ++) if(phi[i] == i) for(int j = i; j < 1005; j...原创 2018-04-19 20:51:40 · 1860 阅读 · 0 评论 -
DP之背包问题(01背包+完全背包+分组背包+多重背包+二维费用背包)
首先是01背包,所有背包问题的基础,看这个博客很棒: 01背包,里面讲的很详细一道裸题 HDU - 2602常规二维写法#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector>#include<set>...原创 2018-03-02 22:31:53 · 749 阅读 · 0 评论 -
code forces 484B (二分)
万万没想到二分,要求余数的最大值很明显a[i]越接近a[j]的倍数则余数越大 ,因此我们将所有的元素从大到小排序 ; 然后枚举a[j]的倍数 ,二分查找小于a[i]倍数的最大值,然后更新余数的最大值。 CodeForces - 484B#include<iostream>#include<cstring>#include&l...原创 2018-04-22 23:53:59 · 284 阅读 · 0 评论 -
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B. Goldbach
传送门 : 题目链接这道题一看就不简单,因为当时通过率还不足5%,后来仔细分析了一下,显而易见不能开数组,用map也是超限,只能一个一个判断是不是素数,问题就出在了两个地方。1.忘了用 unsigned long long ,2.不知道 Miller-Rabin素数检测算法,当时想的是用一个很水的筛法bool su(long long a){ if(a == 2 || a == 3)re...原创 2018-04-22 23:21:37 · 467 阅读 · 0 评论 -
回文(质)数
回文数:设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。如何判断一个数是不是回文数?//判断回文数方法bool pd_h(int x){ int y=x,num=0;//int y=x,防止x被改变 while (y!=0) { ...原创 2018-04-28 21:27:59 · 768 阅读 · 0 评论 -
利用数组筛选素数(降低时间复杂度)
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector>#include<set>#include<map>#include<queue>#include&原创 2018-01-04 21:59:22 · 620 阅读 · 1 评论 -
POJ 2135 Farm Tour(最小费用最大流E'K')
最小费用最大流:保证最大流的同时使得费用最小这道题要求从1-n和n-1总的最短路径,模拟每条路流量为1,费用为路径长度,用spfa进行处理,并设置源点和汇点(费用0,流量2),模拟最小费用最大流E'K'算法(把EK的bfs寻路换成spfa即可)#include<iostream>#include<cstring>#include<cstdio>...原创 2019-03-21 20:12:28 · 144 阅读 · 0 评论 -
POJ 1273 (最大流SAP优化模板)
https://cn.vjudge.net/problem/POJ-1273sap优化:弧优化,sap优化(最短路思想?)哎谁能给一份好点的模板啊(收回说过的话,SAP真香)#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#inclu...原创 2019-03-19 20:33:07 · 168 阅读 · 0 评论 -
POJ 1273 (Dinic模板 + 当前弧优化)
昨天晚上看明白,今天下午把板子打出来Dinic简单概括就是1,利用bfs寻路分层,保证每一次只能从第x层走到第x+1层,省去了很多冗余时间2,利用dfs递归更新增广路径,如果找不到继续执行步骤13,如果步骤1无法分层成功,证明不存在从源点到汇点的一条可行路径,退出程序当前弧优化:在此基础上加上当前弧优化,即如果此次dfs进行到点i的时候无法继续搜索,我们下次bfs重新分层后...原创 2019-03-19 16:31:03 · 343 阅读 · 0 评论