
模板
Eirlys_North
这个作者很懒,什么都没留下…
展开
-
洛谷P3905 Floyd
题意:n个点,m条边,每条边有自己的权值,删除其中d条边,问重新使点A到点B联通所需要恢复的边的最小权值和这个数据范围,只和删除的边的边权有关,不删除的边只需要记录联通情况即可以删除的边做floyd搞起将原来就有的m条边边权记录下来,f中记录成0——表示两点可以联通且经过不需要代价将删除的边在f中改成边权——表示两点可以连通且经过时需要花费原边权的代价#include&l...原创 2019-09-22 19:20:59 · 416 阅读 · 0 评论 -
bzoj 2144 二分&lca 神题详解
题意:跳跳棋是在一条数轴上进行的。棋子只能摆在整点上。每个点不能摆超过一个棋子。我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置。我们要通过最少的跳动把他们的位置移动成x,y,z。(棋子是没有区别的)跳动的规则很简单,任意选一颗棋子,对一颗中轴棋子跳动。跳动后两颗棋子距离不变。一次只允许跳过1颗棋子。 写一个程序,首先判断是否可以完成任务。如果可以,输出最少需要的跳动原创 2017-03-06 19:46:11 · 610 阅读 · 0 评论 -
bzoj 1612 floyd传递闭包
题意:n个牛,给出m场比赛的比赛结果(前面的赢后面的),能力强的总是赢能力弱的,求最多有几头牛能确定能力排名第一眼看题再看数据范围,第一反应不是网络流就是建有向边搞图...当一个牛的能力可以确定时,当且仅当能赢它的牛加上输给它的牛有n-1头可以发现,赢和输的信息是可以传递的即当i能赢k且k能赢j时,i也能赢j。输的信息同理这样我们就能找到所有能赢i的牛和输给i的牛分别记录赢原创 2017-03-07 06:58:00 · 439 阅读 · 0 评论 -
bzoj 2049 LCT模板
题意:初始n个点独立,三种操作:(1)Connect x y x和y之间连一条边 (2)Destroy x y x和y之间的边断掉 (3)Query x y 查询x和y是否联通LCT模板..var n,m,x,y :longint; i,j :longint; ch :char原创 2017-03-06 21:38:21 · 397 阅读 · 0 评论 -
bzoj 1568 && bzoj 3165 超哥线段树
题意:多次插入一条射线,以及询问某个x值能截到的最大纵坐标超哥线段树...这里蒟蒻不想说话...推荐两篇博客:http://blog.youkuaiyun.com/u012288458/article/details/51865920http://www.cnblogs.com/DaD3zZ-Beyonder/p/5478433.html注意:线段树根的区间范围是[1,50000]原创 2017-03-19 18:13:27 · 850 阅读 · 0 评论 -
bzoj 3170 计算几何 && bzoj 1604 计算几何+SBT维护
题意:n个点,求n个点中的一个点到其余各点的切比雪夫距离和最小又到了涨姿势的时候了切比雪夫距离:max{|x1-x2|,|y1-y2|}欧几里得距离:sqrt(sqr(x1-x2)+ sqr(y1-y2))曼哈顿距离:|x1-x2|+|y1-y2|曼哈顿距离转化成切比雪夫距离:(x,y) -> (x+y,x-y),这样新点的切比雪夫距离就是原点的曼哈顿距离切比雪夫距离转原创 2017-03-04 11:24:02 · 490 阅读 · 0 评论 -
bzoj 2662 && bzoj 2763 分层图spfa
题意:n个点,m条有向边,最多使k条边的边权变为原来的一半,每条边能且只能缩短一次,问从点1到点n的最短距离分层图就是有多维状态的有边长图,然后比起正常的最短路转移就是多了一种跨维度转移的状态转移。var n,m,k,ans,l,x,y,z:longint; i :longint; pre,other,len原创 2017-02-26 17:08:13 · 444 阅读 · 0 评论 -
bzoj 3916 暴力+hash
题意:将原串复制一遍再随机插入一个字符,给出操作后的字符串求原串...暴力枚举插入的是哪个,hash判断一下即可..注意:(1)所谓不同串是串本身不同,截的位置不同但截出的串相同是一样的,并不算多种情况 (2)unique打成‘uniuqe’真是脑残起来手贱的自己都害怕.... {$Q-}var n,l,t1,tl,tr :longint原创 2017-03-18 16:29:22 · 533 阅读 · 0 评论 -
hdu 1533 KM匹配
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1533关于KM的简单讲解&&模板 推荐(写的很详细也很容易理解):http://blog.youkuaiyun.com/pi9nc/article/details/12250247 题目求最小权值和,KM处理的是最大权值和,在建图的时候每条边建成负数即可第一次写KM匹配,代码改得比较丑type原创 2017-03-08 21:03:12 · 314 阅读 · 0 评论 -
bzoj 2393 & bzoj 1853 容斥原理
我觉得我写不出更合适的题解了:http://www.2cto.com/kf/201412/359333.htmlvar l,r,n,m :longint; ans :int64; a,b :array[0..1050] of int64; flag原创 2017-03-04 20:54:05 · 414 阅读 · 0 评论 -
bzoj 1113 & bzoj 1683 &bzoj 1628 单调栈【经典】
题意:n个矩形排成一排,求用最少的矩形海报cover它们显然最多n个,即一个矩形用一个考虑减少所用海报对于两个高度相等的矩形,当用同一张海报覆盖的时候,它们之间所有的矩形的高度都不低于它们的高度此时答案减1那么所求可转化为:我们对每一个矩阵,找到它左边第一个不高于它的矩阵,判断高度是否相等,如果相等则所用海报数量-1此时这个模型一出,显然的裸单调栈var原创 2017-03-04 12:13:54 · 497 阅读 · 0 评论 -
bzoj 1012 线段树
题意:初始为空,两种操作::(1) Q L :查询当前数列中末尾L个数中的最大的数,并输出这个数的值。保证L不超过当前数列的长度。(2)A n :将n加上最近一次查询操作的答案(如果还未执行过查询操作,则t=0),对常数D取模,将所得答案插入到数列的末尾。一眼过去,直觉告诉我是线段树...type rec=record l,r,max:longint原创 2017-03-04 18:42:30 · 326 阅读 · 0 评论 -
bzoj 1230 线段树 标签
题意:n个灯,m个操作,初始灯全是关的。两种操作:(1)0 l r 把l到r的灯全部取反(开了的关掉,关了的打开)(2) 1 l r 询问[l,r]开着的灯的个数一眼看过去就是线段树,没毛病对于修改,相当于每个数取异或,打标签处理一下就好了type rec=record l,r,sum:longint; flag:bool原创 2017-03-04 17:52:22 · 311 阅读 · 0 评论 -
bzoj 1679 [Usaco2005 Jan]Moo Volume 牛的呼声
题目: 约翰的邻居鲍勃控告约翰家的牛们太会叫. 约翰的N(1≤N≤10000)只牛在一维的草场上的不同地点吃着草.她们都是些爱说闲话的奶牛,每一只同时与其他N-1只牛聊着天.一个对话的进行,需要两只牛都按照和她们间距离等大的音量吼叫,因此草场上存在着N(N-1)/2个声音. 请计算这些音量的和.显然无脑暴力O(n^2)是过不去的但是显然,任意两个牛a和b之间的距离dis对答案的贡献为原创 2017-03-11 17:30:49 · 453 阅读 · 0 评论 -
bzoj 1398 &&bzoj 2882最小表示法
题意:给出两个字符串,判断这两个串是否循环同构,如果循环同构同时输出字典序最小的表示最小表示法模板题...我们可以通过最小表示法做到O(len)维护两个指针i、j,初始i=0 ,j=1,分别作为起点往下找到第一个不相等的字符 即s[i+k]1、如果 k=len,就找到较小的 即 min(i,j)1、 s[i+k]>s[j+k],j不变,i=i+k+1(优化:如果i+k+1原创 2017-03-22 15:53:37 · 441 阅读 · 0 评论 -
洛谷 P1090 合并果子 堆维护动态最小值
题意:n个数,每次任取两个数合并,合并两个数的代价即为两数和,直至只剩下一个数,即进行(n-1)次合并。求代价和最小贪心,每次合并最小值和次小值(取两次当前最小值),并将合并所得的新数加入比较利用堆动态维护最小值#include<stdio.h>int n;int c[500010];int lowbit(int x) { return(x & ...原创 2019-09-20 23:24:44 · 270 阅读 · 0 评论 -
洛谷 P2863 tarjan求强连通分量个数
题意:给定一个n个点,m条边的有向图,求大小大于1的强连通分量个数tarjan模板#include<stdio.h>#include<string.h>#define maxn 10010#define maxm 50010int time = 0, top = 0;int l = 0;int last[maxn], dfn[maxn], low[m...原创 2019-08-11 16:57:19 · 374 阅读 · 0 评论 -
bzoj 4031 矩阵树定理
Description你突然有了一个大房子,房子里面有一些房间。事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子。在一开始的时候,相邻的格子之间都有墙隔着。你想要打通一些相邻房间的墙,使得所有房间能够互相到达。在此过程中,你不能把房子给打穿,或者打通柱子(以及柱子旁边的墙)。同时,你不希望在房子中有小偷的时候会很难抓,所以你希望任意两个房间之间原创 2017-05-02 08:18:21 · 561 阅读 · 0 评论 -
bzoj 1047 单调队列
题意:在a*b的矩阵里,找到一个n*n的子矩阵,使这个子矩阵里的最大值与最小值的差最小n是固定的,484很像一个固定的窗口在一个面上移动如果把题目的条件改为一维,即给定一个序列,窗口长度是n,求这个窗口里最大值与最小值,你会想起什么?对,没错,就是单调队列但这是二维怎么破?拆成一维呀先对每一行i以它在矩阵里的值为基础,维护两个单调队列f1、g1,分别维护[i,j-n+1原创 2017-04-15 08:17:59 · 799 阅读 · 0 评论 -
bzoj 2453 && bzoj 2120 分块
题意:给定一个序列,支持两种操作:(1)多次询问某个区间所含数字种类数 (2)单点修改强行分块...对每个位置维护一个pre数组,表示当前位置颜色的上一个位置如果pre[i]每个块内对pre数组排序,询问时,在整块里每次二分找到l的严格下界,加到答案里;两边的散块暴力找对于修改就把影响到的块暴力修改即可..uses math;var n,m,q,x,y原创 2017-04-19 08:16:03 · 450 阅读 · 0 评论 -
bzoj 1180 LCT
给出n个结点以及每个点初始时对应的权值wi。起始时点与点之间没有连边。有3类操作: 1、bridge A B:询问结点A与结点B是否连通。如果是则输出“no”。否则输出“yes”,并且在结点A和结点B之间连一条无向边。 2、penguins A X:将结点A对应的权值wA修改为X。 3、excursion A B:如果结点A和结点B不连通,则输出“impossible”。否则输出结点A到结点B原创 2017-04-18 20:58:17 · 383 阅读 · 0 评论 -
poj 3784 && 洛谷 P1168 对顶堆
题意:一组数按顺序加入数组,每奇数次加入的时候就输出中位数对顶堆是一种可以O(logn)维护在线第K小值的算法大根堆:维护集合中较小值的部分的最大值。小根堆:维护集合中较大值的部分的最小值。注意到两个堆中的元素各自是单调的,两个堆间也是单调的。也就是说,大根堆中的任何一个元素都不大于小根堆中的任何一个元素维护中位数:构建一个大根堆g和小根堆l,初始均为空...原创 2017-02-10 14:05:38 · 1308 阅读 · 0 评论 -
2-sat 五题 poj 3207 & poj 3683 & poj 3678 &poj 2723 & poj 2749
关于2-sat的具体讲解,推荐神犇博客:http://blog.youkuaiyun.com/moguxiaozhe/article/details/49047085不再赘述,简单列出具体实现步骤:(1)tarjan缩点,顺便判断可行性(2)建反边,重构图(3)记录矛盾找出缩点后的对立块(4)在新图上进行拓扑排序(5)按拓扑排序的顺序(从影响小的开始),将一个未原创 2017-04-04 08:21:02 · 544 阅读 · 0 评论 -
bzoj 2054 并查集
题意:给定一个序列,多次将某个区间染成某种颜色,求最后每个点是什么颜色由于只求最后染的颜色,所以倒着染这样一个位置最多只需要染一次,染过就不需要再染也就是说,对于当前染色,区间内已经染色的位置这次染色就要直接跳过,即只染区间内还没有被染色的并查集的一个经典神助攻:删除一个数后快速找到它后面第一个没有删除的数(处理完一个位置后快速找打它后面第一个需要处理的位置)这样就能保证每个位原创 2017-04-12 21:34:52 · 529 阅读 · 0 评论 -
bzoj 1598 K短路 A*
题意:n个点,起点为n终点为1,m条有向边。求前K短路,如果不存在输出-1涨姿势时刻——A*算法A*算法的核心在于它的估值函数的设计上: f(n)=g(n)+h(n) 其中,f(n)是每个可能试探点的估值;g(n)表示从S到n的实际代价h(n)表示从n到T的估值(h(n)设计的好坏,直接影响着具有此种算法的是否能称为A*算法)。具有f(n)=g(n)+h(n)原创 2017-03-26 11:35:34 · 522 阅读 · 0 评论 -
poj 2976 && poj 2728 && poj3621 && bzoj 1486 01分数规划
关于01分数规划的具体讲解和例题分析,推荐相当好的博客:http://www.cnblogs.com/perseawe/archive/2012/05/03/01fsgh.html这里不再赘述所以这里只是简单粗暴的贴代码poj 1976题目的要求是求比值最大,限制是所取得数量为n-k,所以只需要将d排序取前n-k个即可注意:数据结束的条件是(n=0) && (k=0),原创 2017-03-17 19:59:25 · 487 阅读 · 0 评论 -
bzoj 1656 bfs+射线法
题意:n*m的地图,给定起点,每一步可以向八个方向前进,求环绕障碍点一周最少的步数显然是bfs,但是并不是裸的bfs射线法见:http://www.mamicode.com/info-detail-1138212.htmltype rec=record x,y:longint;end;const walk:array[1..原创 2017-03-15 06:58:17 · 550 阅读 · 0 评论 -
bzoj 1222 奇怪的dp
题目:某加工厂有A、B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成。由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同。某一天,加工厂接到n个产品加工的任务,每个任务的工作量不尽一样。你的任务就是:已知每个任务在A机器上加工所需的时间t1, B机器上加工所需的时间t2及由两台机器共同加工所需的时间t3原创 2017-03-13 14:47:39 · 434 阅读 · 0 评论 -
bzoj 1057 悬线法
题意:n*m的棋盘,求出满足像国际象棋棋盘那样黑白相间的最大子矩阵和最大正方形经典悬线法一开始直接按01的情况上的裸悬线法,经亲测,所得最大正方形的答案是正确的,但是最大子矩阵的答案偏小然后网上的大神教我做人...orz把奇行偶列和偶行奇列位置的取反,就能把它转化为普通的求全1或全0的一般悬线法,分别以0为障碍点和以1位障碍点跑一遍,取maxvar n,m原创 2017-03-03 15:32:43 · 711 阅读 · 0 评论 -
bzoj 3039 悬线法 最大子矩阵问题
题意:给出一个n*m的矩阵,找出不含'R'的最大子矩阵的面积并乘3悬线法经典题这里选择O(nm)的算法具体请见《浅谈用极大化思想解决最大子矩阵问题》var n,m,ans,ll,tt :longint; i,j :longint; s :ansistring; h原创 2017-03-03 14:09:38 · 557 阅读 · 0 评论 -
bzoj 1036 树链剖分模板
题意:一棵n个节点的树,每个点都有一个权值w,三种操作:1、CHANGE x y 把x节点的权值改为y2、QMAX x y 询问x到y路径上节点的最大权值3、QSUM x y 询问x到y路径的节点和,包括x和y本身树链剖分裸模板..简单介绍下树链剖分一般用来维护两个点之间路径上各点(边)权值的最大、最小,权值和并且支持在线更改任意节点(边)的权值(把链剖出来挂在线段原创 2017-02-15 18:20:00 · 409 阅读 · 0 评论 -
poj1144 割点模板
tarjan求割点(low[p]>=low[x]) 的模板题,注意对dfs序列根节点情况的单独考虑(必须访问至少两次)var n,ans,l,x,y :longint; time,top,son :longint; last,low,dfn,z :array[0..110] of longint; vis,flag原创 2016-11-15 17:13:41 · 418 阅读 · 0 评论 -
洛谷 P1330 封锁阳光大学 二分图染色模板
裸的二分图染色模板,由于求最少的河蟹,所以在每次重新更新颜色(dfs)的时候ans=ans+min(ans1,ans2),而不能到最后再统计颜色为1的有几个、颜色为0的有几个,因为此时并不能保证最优var n,m,l,ans1,ans2,x,y:longint; ans :longint; i原创 2016-11-15 23:55:30 · 565 阅读 · 0 评论 -
poj3177 tarjan缩点+割边 模板 【pascal】
1、tarjan缩点求割边2、缩点后此时一定形成一棵树,再把割边加回来求缩点后的各个点的度3、至少在树上添加(leaf+1)/2 条边,就能 使树达到边二连通,leaf的度为1var n,m,l,ans,a,b :longint; time,top,p,q :longint; vis :array[0..原创 2016-11-16 07:56:30 · 521 阅读 · 0 评论 -
判断负环 dfs-spfa 模板【pascal】
var n,m,t,l,x,y,z :longint; i :longint; flag :boolean; last,dis :array[0..200010] of longint; vis :array[0..200010原创 2016-11-16 20:05:26 · 1225 阅读 · 0 评论 -
左偏树模板【pascal】
var n,m,x,t,root,size:longint; i :longint; l,r,dis,key :array[0..1000010] of longint;procedure swap(var a,b:longint);var c:longint;begin c:=a;原创 2016-11-16 21:51:23 · 486 阅读 · 0 评论 -
字符串hash模板【pascal】
const base=137; step=13; mo=1000000;var n,ans,p,l :longint; s :array[0..10010] of ansistring; heap :array[0..1000010] of原创 2016-11-17 20:49:02 · 504 阅读 · 0 评论 -
尺取法模板 【pascal】(附poj 3061&poj 2739)
尺取法,详细的介绍以及图片网上有很多,这里不再啰嗦,个人更喜欢叫它毛虫算法,以至于在程序中的名字都叫caterpillar(毛虫),因为它的移动和毛毛虫真的是太像了=w=时间复杂度:O(n)直接贴代码(模板)poj 3061var t,n,m,ans :longint; i :longint;原创 2016-12-15 21:36:06 · 615 阅读 · 0 评论 -
bzoj 1022 博弈 Anti-Nim(模板)
具体证明请见贾志豪大犇的2009论文 orz,这里直接贴结论:对于Anti-SG 的:1、如果所有子游戏的SG异或和=0且所有子游戏的SG2、如果所有子游戏的SG异或和1则先手必胜两种情况都不满足的则先手必输代码:var t,n,cnt,tot :longint; i :longint; a,s原创 2016-12-16 21:33:28 · 418 阅读 · 0 评论 -
bzoj 3223 splay模板 【pascal】
const sroot=-1;var n,m,x,y, root :longint; i :longint; a :array[-1..100010] of longint; father,size,tree:array[-1..100010] of lon原创 2016-12-20 20:54:47 · 428 阅读 · 0 评论