自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Pengwill's Blog

一百年太短,只争朝夕

  • 博客(52)
  • 资源 (2)
  • 收藏
  • 关注

原创 【算法学习】树的重心与点分治

树的重心树的重心也叫做树的质心。其本质是一个点,删除这个点后,形成的子树中最大的节点数目最小。解法一遍dfs即可。dfs的时候记录一下当前节点uuu的size[u]size[u]size[u],同时记录他的所有儿子子树中的最大节点数目mxchildmxchildmxchild,那么删除当前节点uuu所形成的子树就是max(mxchild,n−size[u])max(mxchild,n−...

2018-08-31 19:58:03 1434

原创 【算法练习】Luogu 2634 [国家集训队]聪聪可可(点分治)

题意聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃、两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了,可是他们已经玩儿腻了这种低智商的游戏。他们的爸爸快被他们的争吵烦死了,所以他发明了一个新游戏:由爸爸在纸上画n个“点”,并用n-1条“边”把这n个“点”恰好连通(其实这就是一棵树)。并且每条“边”上都有一个数...

2018-08-31 19:49:21 187

原创 【算法练习】Luogu 3806 【模板】点分治1(点分治)

题意给定一棵有n个点的树 询问树上距离为k的点对是否存在。题解点分治代码#include<bits/stdc++.h>using namespace std;typedef double db;typedef long long ll;typedef unsigned long long ull;const int nmax = 1e6+7;c...

2018-08-31 19:46:32 215

原创 【算法练习】CodeVs3639 树的重心

题意输出删除树的中心后,子树最大的size数目,如果有多个树的重心,升序输出他们的值。题解dfs一遍。 记录当前节点的size和子树最大的size,另一半就是nodenum - size[u],取个最大值就是子树最大的size数目。一边统计一遍更新答案。代码#include<bits/stdc++.h>using namespace std;typ...

2018-08-31 14:30:58 189

原创 【补题】Codeforces Round #506 (Div. 3)

A. Many Equal Substrings题解找出最长的和后缀相等的前缀,反复输出除去前缀的剩下部分即可啦。代码#include<bits/stdc++.h>using namespace std;typedef double db;typedef long long ll;typedef unsigned long long ull;const...

2018-08-28 19:01:26 194

原创 【算法练习】POJ - 2723 Get Luffy Out (2-SAT)

题意题解题没什么难的。说一下一个坑点。 题目说的是有nnn对钥匙,就有2∗n2∗n2*n个钥匙,就有4∗n4∗n4*n个布尔变量。 被这个坑了半天。代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef double ...

2018-08-27 14:04:25 154

原创 【算法学习】2-SAT

2-SAT2-SAT一般给出nnn个布尔变量(取0或者取1),再给出mmm个关于这些布尔变量的约束条件(见下文),求出是否能找到解满足这些约束条件。2-SAT可以建图,转换成强连通分量进而判断矛盾问题。对于布尔变量,只有2个取值,取0或者取1,所以对于任意一个布尔变量xixix_i,我们可用其原变量iii(即取1值)和其反变量i′i′i'(即取0值)依据约束条件来构建图。约束条件...

2018-08-26 20:01:06 3943

原创 【算法练习】HDU - 1814 Peaceful Commission (2-SAT)

题意一国有n个党派。每一个党派在议会中都有2个代表,现要组建和平委员会,要从每一个党派在议会的代表中选出1人,一共n人组成和平委员会。已知有一些代表之间存在仇恨,也就是说他们不能同一时候被选为和平委员会的成员,现要你推断满足要求的和平委员会是否能创立?假设能,请给出字典序最小的方案。题解输出字典序最小的,按照白书上的套路来就行了。 这题无限wa,原因是因为在寻找解的时候,每次找要先把...

2018-08-26 19:12:58 208

原创 【算法练习】HDU - 1816 Get Luffy Out *(2-SAT)

题意题解直接把POJ的那道题交上去就过了。 先说一下POJ那道题的做法。 二分能开的门个数,然后判断是是否合法。由于开门的是有先后顺序的,前边的没开,后边的门也开不了,所以在二分一个开门个数的时候,要限制图中某些边是否能选中。这个在对门建图的时候,对边加一个id,每次二分tarjan时,判断一下边的id是否小于当前二分的id,若小于等于的话,就表示这条边是在二分位置之间的限制关系,...

2018-08-26 16:47:25 151

原创 【算法练习】POJ - 3648 Wedding (2-STA)

题意题解代码#include<cstdio>#include<cstring>#include<queue>#include<algorithm>using namespace std;typedef double db;typedef long long ll;typedef unsigned long long ul...

2018-08-26 14:47:10 206

原创 【算法训练】POJ - 3678 Katu Puzzle (2-SAT)

题意有nnn个布尔变量,mmm个条件,求是否有可行解。题解2-SAT 如果必须uuu,那么u′−>uu′−>uu'->u。 tarjan缩点判一哈儿原变量和反变量是否在一个scc中好了。代码#include<cstdio>#include<cstring>#include<algorithm>using na...

2018-08-25 23:23:19 180

原创 【算法练习】POJ - 3683 Priest John's Busiest Day (2-SAT)

题意有一个小镇上只有一个牧师。这个小镇上有一个传说,在九月一日结婚的人会受到爱神的保佑,但是要牧师举办一个仪式。这个仪式要么在婚礼刚刚开始的时候举行,要么举行完婚礼正好结束。 现在已知有n场婚礼,告诉你每一场的开始和结束时间,以及举行仪式所需要的时间。问牧师能否参加所有的婚礼,如果能则输出一种方案。题解2-SAT + 路径输出 首先建图不难,判断两个时间段是否相交。 然后按照...

2018-08-25 22:28:52 179

原创 【算法练习】POJ - 3207 Ikki's Story IV - Panda's Trick (2-SAT)

题意给出一个nnn的点的环,mmm条线,每条线连接环上的点。线可以从环内部连接也可以从环外部连接。求能否使得这mmm条线不相交。题解首先要知道一个引理:如果两条线从环都从内部连接相交的话,那么他们从外部连接一样会相交。 有了这个引理,为了让两条原本相交的线la、lbla、lbl_a、l_b变得不相交,就必须然们一条从内部连接,一条从外部连接。 设布尔变量a、ba、ba、b表示直...

2018-08-24 17:03:58 189

原创 【算法练习】Uva11324 The Largest Clique (强连通分量+DP)

题意给一张有向图G,求一个结点数最大的结点集,使得该结点中任意两个结点 u 和 v满足:要么 u 可以到达 v, 要么 v 可以到达 u(u 和 v 相互可达也可以)。题解强连通分量缩点后DP代码#include<bits/stdc++.h>using namespace std;typedef double db;typedef long long ll...

2018-08-23 14:40:34 247

原创 【算法练习】HDU - 3844 Mining Your Own Business (双连通分量-割点)

题意有一座地下的稀有金属矿由n条隧道和一些连接点组成,其中每条隧道连接两个连接点,任意两个连接点之间最多只有一条隧道。为了降低矿工的危险,你的任务是在一些连接点处安装太平井和相应的逃生装置,使得不管哪个连接点倒塌,不在此连接点的所有矿工都能到达太平井逃生(假定除了倒塌的连接点不能通行外,其他隧道和连接点完好无损)。为了节约成本,比应当在尽量少的连接点安装太平井。还需要计算出当太平井的数目最小时...

2018-08-23 13:51:46 899

原创 【算法练习】LA3523 Knights of the Round Table (双连通分量-割点、二分图染色)

题意有n(n≤1000)n(n≤1000)n(n≤1000)个骑士,m(m≤1000000)m(m≤1000000)m(m≤1000000)对骑士互相憎恨,要3个以上的骑士且保证互相憎恨的骑士不会坐在相邻位置才能开会议,求多少骑士一定不能参加任何一次会议。题解思路其实很简单,找到一个无向环,然后看环是否是奇数环就可以了。看lrj的白书把自己看晕了,下面说一下自己的理解。一个无向环一...

2018-08-23 12:13:35 283

原创 【算法练习】 HihoCoder 1190 连通性·四(点双连通分量)

题意对于每个点双连通分量,输出其中的边编号最小的值。题解tarjan算法。 本质还是求割顶,然后边tarjan边计算。 注意因为根节点不一定是割顶。为了达到题目的输出要求,不用判断根节点是不是割顶了。这样的话,可以直接可以把1所在的组全部赋值上。代码#include<bits/stdc++.h>using namespace std;typedef do...

2018-08-22 21:46:38 163

原创 【算法练习】HihoCoder 1185 连通性·三 (强连通分量)

题意从1为起点,找到一条有向路径,其经过节点和最大。题解tarjan算法缩点,形成有DAG,在DAG上DP即可,代码#include<bits/stdc++.h>using namespace std;typedef double db;typedef long long ll;typedef unsigned long long ull;co...

2018-08-22 21:42:37 140

原创 【算法练习】HihoCoder 1184 连通性二·边的双连通分量 (边双连通分量)

题意根据每个点所在的边双连通分量,输出其组内最小的顶点编号。题解Tarjan算法。 2边dfs即可。代码#include<bits/stdc++.h>using namespace std;typedef double db;typedef long long ll;typedef unsigned long long ull;const int...

2018-08-22 21:40:00 152

原创 【算法练习】HihoCoder 1183 连通性一·割边与割点

题意给出无向图,求出图中的割边与割点。题解Tarjan算法。代码#include<bits/stdc++.h>using namespace std;typedef double db;typedef long long ll;typedef unsigned long long ull;const int nmax = 1e6+7;cons...

2018-08-22 21:37:20 172

原创 【算法学习】连通分量、割顶与桥、双连通分量、强连通分量

连通分量连通分量:需要保存边用dfs,不需要保存边用并查集二分图二分图:非连通图是二分图当且仅当每个连通分量都是二分图。 一个连通图是二分图,当且仅当它可以二染色。 一个连通图是二分图,当且仅当它不含奇数环,所谓奇数环,即环上的点(或边)个数为奇数。反证法证明一个二分图当且仅当不含奇数环。证明: 假设二分图含有奇数环,设顶点编号分别为x1,x2,x3…,x2k−1x1...

2018-08-22 21:32:01 957 1

原创 【算法练习】LA4255 Guess (差分约束)

题意对于n个数字,给出sum[j]-sumi的符号(正负零),求一组n个数的的可行解(n个数都在-10—10之间)题解初始化为-10,变量取值下界为-10,利用题目中的三角不等式建图,跑最短路即可。 注意计算出来的是前缀和。代码#include<bits/stdc++.h>using namespace std;typedef double db;typ...

2018-08-21 13:23:53 219

原创 【算法练习】洛谷P1608 路径统计(SPFA最短路计数)

题意求最短路径的数目,可能用重边。题解SPFA,为了保证不会重复计算,需要维护一个当前队列中到这些顶点的次数,每次出队时清零。代码// luogu-judger-enable-o2#include<bits/stdc++.h>using namespace std;typedef double db;typedef long long ll;t...

2018-08-18 20:48:21 791

原创 【算法练习】POJ3463 Sightseeing(最短路与次短路计数)

题意已知一张图(单向边),起点S和终点F,求从S到F的最短路和比最短路长1的路径的条数之和。 题解dijkstra维护四个东西,一个是最短距离,一个是次短距离,一个是最短路径的个数,一个是次短路经的个数。 如果用spfa的话(假的spfa),需要上优先队列,每次选距离最小的,这样写的话,就是一个单个顶点能多次入队的dijkstra。不如直接写dijkstra。代码#i...

2018-08-18 20:45:26 280

原创 【算法练习】HDU2489 Minimal Ratio Tree(DFS+PRIM)

题意给定一个完全图,图中有点权和边权, 找出m个点,构成的一棵树,使得他们的边权之和除以点权值和最小。题解最小生成树可以解决分子边权之和最小,又因为是稠密图,所以考虑Prim。 如何确定点权之和最小,由于是点数很少,直接暴力枚举即可。最差是C715C157C_{15}^7。代码#include<bits/stdc++.h>using namespac...

2018-08-17 14:00:18 127

原创 【算法练习】 HDU3938 Portal(并查集+离线)

题意一张无向图,求有多少条路径使得路径上的花费小于L,这里路径上的花费是这样规定的,a、b两点之间的多条路径中的最长的边最小值。题解询问次数很多,考虑离线操作。 离线操作也是套路,因为路径花费是其中最大的,所以考虑从小到大加边,当前加边的边的边权一定大于等于已经加过的最大边的边权。利用这个性质,可以进行离线操作,每次加边即为将边所连接的两个点加入到并查集中。加入的边对答案的贡献为...

2018-08-16 23:40:29 293

原创 【滚动训练】HDU 3926 Hand in Hand(并查集)

题意有n个小孩,他们之间手拉手,形成一个图,图的每个点都是0、1、2个度。在给出一个图,判断是否两个图同构。题解并查集,每次合并的时候判断一下是否构成环,然后记录一下每个联通分量的节点个数,成环的单独判断即可代码#include<bits/stdc++.h>using namespace std;typedef double db;typedef ...

2018-08-15 23:43:08 149

原创 【算法练习】HDU3065 病毒侵袭持续中 (AC自动机)

题意给出n个单词的字典,给出一个文本串,求文本串中每个单词出现了多少次。题解AC自动机,还是卡空间。卵用memset就MLE,用不带last就TLE。 所以就改了一蛤。代码#include<cstdio>#include<cstring>#include<queue>#include<algorithm>us...

2018-08-09 18:52:08 170 1

原创 【算法练习】HDU2896 病毒侵袭 (AC自动机)

题意给出n个单词组成的字典,给出m个文本,对于每个文本求出字典中出现的单词个数,保证每个文本最多出现3个字典中的单词。题解AC自动机模板题,这道题卡内存。 因为是单组数据,没有必要初始化。我的代码无论用什么初始化,都MLE。 下面的代码过了,还有优化的余地,ans可以不用开数组,直接一个vector就可以了。还可以手写队列。代码#include <bits/s...

2018-08-09 16:29:54 173

原创 【算法练习】HDU 2222 Keywords Search (AC自动机)

题解AC自动机代码#include <bits/stdc++.h>using namespace std;const int nmax = 1e6 + 7;const int sigma = 26;struct Aho { int sz; queue<int> que; struct Node { int n...

2018-08-09 15:24:05 138

原创 【算法训练】CodeForces208E Blood Cousins(树上启发合并)

题意在一棵树上,如果两个节点a和b向上的第p个祖先相同,就称他们为p代表亲。(跟日常生活中有所不同,p不一定是他们的最近公共祖先)。 给出一些询问,问v的p代表亲的数量。 题解对于每个询问,我们可以理解为,在结点v的p级祖先的子树中,和v深度相同的节点有多少个。 对于递归来说,是从叶子节点开始寻找答案的,也就是自底向上求答案、如果不知道v的p级祖先是谁,我们就无法离线处理询问。 ...

2018-08-08 21:44:10 362

原创 【算法训练】POJ1286 Necklace of Beads(Polya定理)

题意Beads of red, blue or green colors are connected together into a circular necklace of n beads ( n < 24 ). If the repetitions that are produced by rotation around the center of the circular neck...

2018-08-08 19:07:20 194

原创 【算法学习】Polya定理及其计数

转载自 https://blog.csdn.net/nameofcsdn/article/details/53321264

2018-08-08 17:13:09 1028

原创 【算法练习】BZOJ1877: [SDOI2009]晨跑 (网络流,最小费用最大流)

题意n个点,m条单向边;每条边有费用(通过的时间),每条边只能走一次(流量限制),求用走的边尽可能多,并且时间尽可能短。(最小费用+最大流)题解最小费用最大流,然后建图的时候拆点,原因是只能经过一次。代码#include<bits/stdc++.h>using namespace std;typedef double db;typedef long lon...

2018-08-07 23:11:34 221

原创 【滚动训练】CodeForces877E Danil and a Part-time Job (DFS序+线段树)

题意给一颗树,树上每个节点都有一个开关,每次操作对一个节点及其子树上节点的开关翻转,询问以某个节点为根的子树上开着的开关数目。题解dfs序将树形结构转换成线性结构,然后用线段树+lazy标记维护即可。 需要注意的就是编号问题,因为原树中的编号和线段树维护的区间编号不是一一对应的。 dfs序的pre编号是原树编号到线段树编号的一个hash。 所以在建树初始化的时候有一下两种方法...

2018-08-07 13:47:11 238

原创 【滚动训练】HDU6315 Naive Operations (线段树)

题意给定一个固定序列BBB,并且维护一个序列AAA,有两种操作,一种是给AAA区间加一,另外一种询问∑rlAi/Bi∑lrAi/Bi\sum_l^r{A_i/B_i}.题解线段树的懒标记,让其叶子节点值等于BiBiB_i; 在lazy上维护最小值和答案val的区间和,每次区间加一,等价于让lazy减一,如果lazy减到0,就说明给区间需要暴力更新答案,则递归子树取更新,更新完后把...

2018-08-07 09:49:04 193

原创 【算法练习】CodeForces915F Imbalance Value of a Tree (并查集)

题意求出树上所有路径的最大值和最小值之差的和。题解套路题,考虑每个点对答案的贡献,把删点变成加点,遍历一遍就OK。代码#include<bits/stdc++.h>using namespace std;typedef double db;typedef long long ll;typedef unsigned long long ull;con...

2018-08-07 09:40:50 168

原创 【算法练习】CodeForces1007F Dominant Indices (树上启发合并)

题意求每个点的子树中哪一层节点数最多,如果有节点数最多不唯一,取层数最小的。题解树上启发合并。开个数组记录当前深度的节点数目,每次更新时保存答案,注意求得是对于子树的深度,所以最后要减去递归时节点的深度。 复杂度O(nlogn)O(nlogn)O(nlogn) 这道题是被题意卡了,完全不知道题面再说什么。。代码#include<bits/stdc++.h&gt...

2018-08-07 09:30:00 285

原创 【算法练习】SGU 507 Treediff(树上启发合并)

题意对于每个非叶子节点,在子树中找到两个叶子节点使得它们的权值之差的绝对值最小。如果子树内只有一个节点。输出231−1231−12^{31}-1 题解启发式合并代码#include<bits/stdc++.h>using namespace std;typedef double db;typedef long long ll;typedef unsi...

2018-08-05 22:29:23 522

原创 【算法练习】CodeForces570D Tree Requests(树上启发合并)

题意给定一棵树,树上每个节点上有一个小写字符,给出一些询问,询问包括节点和深度,求出以这个节点为固定深度的节点上能否组成一个回文串。题解子树静态的问题,所以考虑树上启发合并,其实就是如何维护答案。 首先考虑回文串出现的条件,组成回文串的所有字母中奇数个的字母不超过1个。 由于总的字母类别不超过26个,我们可以利用二进制的思想,即每一个字母对应二进制的一位,若一个字母出现奇数次,...

2018-08-05 19:02:34 316

algebra_2005_2006.zip

algebra_2005_2006数据集,常作为知识追踪的使用数据。KDD Cup 2010: Educational Data Mining Challenge使用的数据集之一。

2020-04-11

Dynamic Graph Algorithms

Dynamic Graph Algorithms Methodology & State of the Art Algorithmic Techniques & Experimen Conclusions

2018-08-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除