- 博客(92)
- 收藏
- 关注
原创 java_leetcode_1971. 寻找图中是否存在路径_dfs(链式前向星,邻接表),并查集
java_leetcode_1971. 寻找图中是否存在路径_dfs(链式前向星,邻接表),并查集
2022-06-02 16:52:38 350
原创 一本通-> 提高篇-> 图论-> 强联通分量
一本通:提高篇:图论:强联通分量:1513:【 例 1】受欢迎的牛受欢迎的奶牛只有可能是图中唯一的出度为零的强连通分量中的所有奶牛,所以若出现两个以上出度为0的强连通分量则不存在明星奶牛,因为那几个出度为零的分量的爱慕无法传递出去。那唯一的分量能受到其他分量的爱慕同时在分量内相互传递,所以该分量中的所有奶牛都是明星。#include<bits/stdc++.h>using...
2020-01-05 19:08:18 1041
原创 2_SAT
2_SAT有N个变量,每个变量只有两种可能的取值。再给定M个条件,每个条件都是对1两个变量的取值限制。求是否存在N个变量的合法赋值,使M个条件均被满足。我们可以把此类问题转换成统一的形式:若变量AiA_iAi赋值为AipA_ipAip,则变量AjA_jAj必须赋值为AjqA_jqAjq,其中q,p为{0,1};解:首先,对于这张图中的每个强连通分量中的点一定要么同时选,要么同时不选...
2020-01-05 19:05:34 325
原创 PAT 甲 1131 Subway Map (30 分)
1131 Subway Map (30 分)题目大意:给一张地图,无向,给出n个行线,起点终点,不同行线要通过中转站转车,问最少经过多少站到达,如果站数相等,再根据最少转车次数判断。要求输出站数,和每次转车的行线,这条行线的起点终点。输入:47 1001 3212 1003 1204 1005 1306 77979 9988 2333 1204 2006 2005 2004 2003...
2019-11-21 19:58:35 351
原创 欧拉路
欧拉回路,也就是著名的哥尼斯堡七桥问题,也成一笔画问题。问题描述:是否可以找到一种方案,使得人们从自己家里出发,不重复走每一座桥,然后回到家中?在了解欧拉回路前,我们再了解一下知识。有向图、无向图、混合图的欧拉通路、欧拉回路。无向图:存在欧拉回路的条件:原图连通,每个结点均为偶度结点。存在欧拉通路的条件:存在欧拉回路,或原图连通,有两个结点为奇度结点,其他结点均为偶度结点。有向图:...
2019-10-13 12:43:12 304
原创 一本通->提高篇->图论->割点和桥:
一本通:提高篇:图论:割点和桥:1520:【 例 1】分离的路径题意:如何把有桥图通过加边变成边双连通分量如果叶子数(缩点后度为1的点)为1,则至少需要添加0条边;否则为(叶子数+1)/ 2;#include<bits/stdc++.h>using namespace std;const int N = 2e5+100;int n,m,cnt=1; //cnt从1...
2019-10-10 21:36:56 819
原创 P3469 [POI2008]BLO-Blockade
传送门题目大意:Byteotia 城市有 n 个城镇,m条双向道路。每条道路连接两个不同的城镇,没有重复的道路,所有城镇连通。输出 n个数,代表如果把第 i 个点去掉,将有多少对点不能互通。这是一道求割点的经典题目,需要好好分析一下结果是怎么得来的。首先我们要明确一点,这里如果(1,3)两点不能互通,那么(3,1)也是不能互通的,即得出来不能互通的点需要乘2。还有一个注意点是我们去...
2019-10-09 11:14:15 620
原创 割点和桥
先介绍一些基础定义:(都是针对无向图)点连通度与边连通度在一个无向连通图中,如果有一个顶点集合V,删除顶点集合V以及与V中顶点相连(至少有一端在V中)的所有边后,原图不连通,就称这个点集V为割点集合。一个图的点连通度:最小割点集合中的顶点数。如果一个边集合,删除这个边集合后,原图不连通,就称这个边集为割边集合。一个图的边连通度:最小割边集合中的边数。点双连通:如果一个无向连通图的点连通...
2019-10-08 21:13:16 1082
原创 一本通->提高篇->图论-> 最小生成树:
一本通:提高篇:图论:最小生成树:1486 【例题1】黑暗城堡求最短路径生成树,用最短路算法求出最短路后,找到最后dis数组,遍历每条边上找到对应成立dis[]的度数(个数),再用乘法原理求出结果。#include<bits/stdc++.h>using namespace std;typedef long long ll;//const ll mod = (1<...
2019-09-26 18:35:14 1073
原创 严格次小生成树 讲解+模板
了解次小生成树(严格次小生成树) 之前,需要先了解前置知识。最小生成树:https://blog.csdn.net/A_Pathfinder/article/details/88125032最近公共祖先 :https://blog.csdn.net/A_Pathfinder/article/details/101034332首先我们看什么是严格,我们求得最小生成树准确来说是不严格最小生成树...
2019-09-25 10:56:16 799
原创 codeforce 586 E Tourism
传送门题目大意:给n个点和m条边,给n个点的权值。给你一个起点,s。现从s点出发,经历一些点,并加上对应的点的权值。条件:同一边不能连续走两次,但是同一条路是可以走多次的。所以就是对双连通分量进行缩点,再考虑权值问题(树上dp)即可。现在我们考虑已经缩完点求树上权值问题。对于每一个度数为1且他的儿子都没法返回,如果进了,那么就回不来了,反正则一定可以回来(在连通块里自己绕一圈或者去儿子...
2019-09-22 18:28:05 430
原创 1553:【例 2】暗的连锁 树上差分
题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1553差分能够更好的解决区间问题。在讲树上差分之前,首先需要知道树的以下两个性质:(1)任意两个节点之间有且只有一条路径。(2)根节点确定时,一个节点只有一个父亲节点这两个性质都很容易证明。那么我们知道,如果假设我们要考虑的是从u到v的路径,u与v的lca是a,那么很明显,如果路径中...
2019-09-19 20:31:53 812
原创 倍增求lca
倍增求lca 模板求最近公共祖先lca(Least Common Ancestors),什么是公共祖先,给定一棵树,若节点z即使节点x的祖先,也是节点y的祖先,则称z是x,y的公共祖先,在x,y的所有公共祖先中,深度最大的节点称x,y的最近公共祖先,记做LCA(x,y)。举个例子LCA(4,5) = 2,LCA(5,6)=1,LCA(2,3)=1;那么如何求LCA先给出一张我们接下来要...
2019-09-19 20:03:07 500
原创 1496:【例 3】架设电话线
传送门这里给出3种方法求解(因为感觉都蛮有用的)。第一种:dp+最短路dp[i][j]:从1号点到i号点已经用了j次变成0边后路径上的最长边.若有一跳从u到v长度为w的边,则 d[v][num] = max(d[u][num],w);用dis[u][num] 更新dis[v][num+1]的最小值分别更新:d[v][num] = max(d[u][num],w);...
2019-09-05 19:52:37 1324
原创 1495:【例 2】孤岛营救问题
传送门 //因为一本通上有一个测试点错了,所以给洛谷的测试这题大部分都是用bfs + 状压去做,但是一本通里把这题放在了最短路上,虽然用最短路的时间空间都比bfs要差,但是这是一道很好的去训练分层最短路的题。BFS版:bfs把每个种类的钥匙都单独分成一层,然后根据我拿了钥匙的状态去找到我现在应该在的层,再bfs搜索最短路。#include<bits/stdc++.h>...
2019-09-04 14:07:06 1311
原创 floyd求最短环路径 及其路径保存 //1494:【例 1】Sightseeing Trip
传送门再次刷新了我对floyd的认知,因为涉及到了可模板部分,单独放一篇。//floyd求最短环路径 及其路径保存 #include<bits/stdc++.h>using namespace std;const int N = 310; const int INF = 0x3f3f3f3f;typedef long long ll;int n,m,ans = I...
2019-09-03 20:06:33 543
原创 Bellman_Ford算法 SPFA算法
用spfa 算法求关于有负权边的最短路。每次从队列中取出一个节点X,遍历与X相通的Y节点,查询比对 Y的长度 和 X的长度+ X与Y的长度 如果X的长度+ X与Y的长度 >Y的长度,说明需要更新操作。 1).存入最短路。 2).由于改变了原有的长度,所以需要往后更新,与这个节...
2019-09-02 13:18:14 248
原创 叉积
叉积图中两个向量p1,p2.两个向量a和b的叉积写作a×b(有时也被写成a∧b,避免和字母x混淆)向量p1,p2的叉积为我们把(0,0)点当做p0.有了叉积的基础,我们在判断两条线段的关系p0p1,p1p2,就可以直接添一条有向线段p0p2,再检查p0p1,p1p2和p0p2的时钟旋转关系。为了做到这一点,我们计算出叉积给出向量的一些模板运算stru...
2019-08-09 23:19:25 452
原创 判断两直线相交 poj 2653
传送门题目也就是让我找到在最上面的棍子。枚举棍子i上方的每根棍子j(i+1≤j≤n),若其中任何一根棍子与棍子i相交,则说明棍子i被上面的棍子压住了,直接判断棍子i+1;若棍子i未与上方的任何一根棍子相交,则棍子i属于最上面的棍子。#include<cstdio>#include<cmath>#include<algorithm>co...
2019-08-09 22:44:26 291
原创 求多边形面积
poj 1654传送门一个字符串,由1-9的数字组成,表示从原点出发,多边形是如何构成的。这里8, 2, 6和4分别表示向北,向南,向东和向西;而9, 7, 3和1分别表示向东北,西北,东南和西南。 数字5仅出现在序列结束的时候,表示停止行走。根据向量叉积原理,只要我们把每次要输的点和上个点做叉积,最后比较奇偶,除2即可,因为叉积得到的是四边形面积。上ac代码#inclu...
2019-08-09 22:38:26 189
原创 叉积求点在直线的一侧 poj 1106
传送门题目大意,让我们从源点,半径为r,可任意旋转的半圆中最多能包含多少个点。发射台为p0,以p0为轴心,可向任意方向旋转,所以我们将任一点pi与p0间的直线都作为半圆的下边界,再枚举所有点,则位于半圆区域内的点pj满足以下两个条件。1:pj实以p0pi为下边界半圆的一侧,即p0pi^p0pj >=0;2: pj与p0的距离不大于半径给出ac代码:#include&...
2019-08-09 22:30:21 290
原创 牛客 free 分层求最短路
给你n个点,m个边,s开始点,t结束点,有k次机会可以把m任意边权值变成0,问最短路是多少。传送门对于一般的求最短路,我们用一个一维dis[]就可以表示出源点到各个点直接的最短关系,由于这里考虑到可以有k次机会能能把权值变成0,所以我们要对每条边进行考虑,变0还是不变0,并且要考虑k次,因此我们用dis[i][j]来表示,i表示是用了i次机会把权值变成0,j是我们要求的点,于是我们就相当于...
2019-08-05 22:04:23 292
原创 Prime Test Miller_Rabin+Pollard_rho
传送门这题卡的时间卡的真的厉害。不仅卡了Miller_Rabin算法,Pollard_rho算法,还卡了gcd 和 反复平方运算。题目大意:给你一个数,如果是素数,直接输出prime,否则输出他的第一个素因子。因为给的数特别大特别多,所以我们只能用Miller_Rabin算法进行大数判断,在判断不是素数后,还要用Pollard_rho算法进行分解。两个都是神仙算法。首先看第一个吧,...
2019-08-03 22:16:40 333
原创 DP: Brackets Sequence
传送门大意就是给你多个括号,让你匹配出能够满足括号匹配的最短序列,满足所给的是求出来的子序列。这题先用把每一个位置i-j上的最需要最小分割(在某个位置不匹配,也就是缺括号我们将其分割),记录下来,就是说如果i-j中存在一个分割位置,那么d[i][j] =d[i][k]+d[k+1][j],我们找出最小的分割位置,保存在c[][]数组里,这题的关键就是这个c数组,用dp求完后我们需要递归去输...
2019-08-02 21:07:39 219
原创 2019牛客暑期多校训练营(第五场) A digits 2
传送门链接:https://ac.nowcoder.com/acm/contest/885/A来源:牛客网You are given a positive integer n which is at most 100.Please find a positive integer satisfying the following conditions:1. The sum of a...
2019-08-01 22:48:56 223
原创 贪心:poj 2287 Tian Ji -- The Horse Racing
传送门田忌赛马,贪心,每次取最好的那种策略,这里坑点就是在田忌(下面用t)最快的马和王(下面用q)最快的马速度相等时候的最优情况。首先我们确定t最快的马比q最快的马要慢的时候,这时候t注定要输一场,那么就用t最慢的马去输,这是最优情况。其次我们确定t最快的马比q最快的马还要快的时候,我们就直接比,赢了完事,这是最优情况。最后我们考虑t和q最快马速度相等的情况:如果t最慢的马比q...
2019-08-01 21:39:33 186
原创 贪心:poj 1230 Pass-Muraille
传送门这题有几个坑点,首先是给的两个点没说哪个是起点,哪个是终点,所以要判断大小关系,其次题目给的的x和y和传统观念不一样,两个反过来,最后就是在一个位置删除一个木板的时候,这个位置要重新判断一次。这题我们分别求每一列上的木板,如果这个列木板个数大于k,我们就取这列木板右端到这列有最长距离的木板,然后删去这个木板。因为我们从左边开始考虑的,当考虑的i列的时候,我们要取对后面还有影响,并且最...
2019-08-01 20:38:37 248
原创 计蒜客2018 ICPC SouthEastern European E. Fishermen
传送门题目大意:n个鱼,m个渔夫,每个渔夫有个l长的棍子,并且渔夫只能在x轴上,求每个渔夫能抓到的鱼。给出鱼的坐标。//别和我说离散前缀好,二分查找快,我就暴力,暴力出奇迹首先我是根据初中时候相似三角形可以得出鱼x最多能延伸到什么位置能被捕捉。最上面的是中点是鱼的位置,我们所求的q区间就是这个鱼能被抓到的区间,中点左右和l都是棍子的长度,所以我们得到在x轴下面小三角形的比等于大...
2019-07-30 17:02:04 258
原创 2019牛客暑期多校训练营(第四场) D triples I
传送门题目简介:就是给你一个数,要你求出能够 或运算 出原数并且你的数能被3整除的最小个数。链接:https://ac.nowcoder.com/acm/contest/884/D来源:牛客网输入237输出1 32 3 6说明3=3, (3|6)=7这题就是一个小学的思路,我们都知道十进制中,任意一个数只要每一位相加的和能被3整除,那么这个...
2019-07-28 11:13:36 265
原创 划分树 求区间第k小问题
划分树是用来求区间第k小问题,区别于主席树,划分树的的内存消耗更小,主席树能够接树状数组或者线段树求动态区间第k小。划分树的原理基于线段树,在给定的大n区间内部求任意区间第k大,我们将n个数不断按照大小顺序并且与原序列对比,再把比较后的值按下表保存在左右子树里,比中间值小的在左子树,比中间值大的在右子树,同时记录每个层每个点i和i点之前进入左子树点的个数(重点,这方便后面的查询)。首先我们...
2019-07-26 13:02:26 340
原创 The 2019 ICPC China Nanchang National Invitational and International Silk-Road Programming Contest J
传送门yah has nnn strings <s1,⋯,sn>< s_1, \cdots ,s_n ><s1,⋯,sn>, and he generates a sequence PPP by two steps:P=<s1,⋯,sn>P = < s_1, \cdots ,s_n >P=<s1,⋯,sn> ...
2019-07-24 16:51:49 338
原创 字典树
字典树,也称前缀树,是一种哈希树的变种。典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。主要思想是用时间来换空间。上面这棵Trie树包含的字符串集合是{in, inn, int, tea, ten, to}。每个节点的编号是我们为了描述方便加上去的。树中的每一条边上都标识有一...
2019-07-24 16:44:36 422
原创 最大团 hdu1530
最大团也就是最大完全图给定一个无向图 G=(V,E),若对任意两个顶点 u、v ∈U,有 (u,v)∈E,则称 U 是 G 的完全子图,G 的完全子图 U 称为图 G 的团。 极大团:一个团不被其他任一团所包含,即其不是任一团的真子集 最大团:在 V 中取最多的点,满足任意两点间相互连接 最大独立集:在 V 中取最多的点,满足任意两点间不连接(最大独立集数=补图的最大...
2019-07-23 10:29:21 369
原创 牛客 2019暑假多校比赛 第二场 D_Kth Minimum Clique
//求第k小完全子图传送门题目描述Given a vertex-weighted graph with N vertices, find out the K-th minimum weighted clique.A subset of vertices of an undirected graph is called clique if and only if every two dis...
2019-07-22 19:13:21 267
原创 牛客 2019暑假多校比赛 第二场 H_Second Large Rectangle
传送门;题目大意:给定一个n*m的只含0 1的矩阵,求第二大全1的矩阵面积输入样例1 201输出0输入1 3101输出1求第二大的全1矩阵,首先要确定怎么求每个矩阵,我们确定每一列上的1,如果当前列有1,那么我们把下面一行的对应列上的1+1;如0001001100110000就可以预先处理成000100120023000...
2019-07-21 19:02:28 212
原创 第四讲:混合背包
问题 如果将01背包、完全背包、多重背包混合起来。也就是说,有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包),求解01背包与完全背包的混合考虑到在01背包和完全背包中最后给出的伪代码只有一处不同,故如果只有两类物品:一类物品只能取一次,另一类物品可以取无限次,那么只需在对每个物品应用转移方程时,根据物品的类别选用顺序或逆序的循环...
2019-04-15 21:00:05 250
原创 第三讲:多重背包
有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是w[i],价值是c[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本算法: 这题目和完全背包问题很类似。基本的方程只需将完全背包问题的方程略微一改即可,因为对于第i种物品有n[i]+1种策略:取0件,取1件……取n[i]件。令f[i][v]表示前i种...
2019-04-15 20:47:15 381
原创 单调队列
先说明单调队列与优先队列的区别:单调队列的长度取决于输入数据的合法性,而优先队列的长度始终与输入数据的数量等同。而他们的单调性都是单调递减或单调递增。//以下文字转于大佬:https://www.luogu.org/problemnew/solution/P1886单调队列有两个性质 队列中的元素其对应在原来的列表中的顺序必须是单调递增的。 队列中元素的大小必须是单调递*(增...
2019-04-08 19:27:40 601
原创 第二讲:完全背包
在01背包的基础上,每种物品都无限件可以使用。样例://来源:http://ybt.ssoier.cn:8088/problem_show.php?pid=1268设有n种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。【输入】第一行:两个整数...
2019-04-02 20:14:39 262
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人