![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
图论
Wa_Automata
这个作者很懒,什么都没留下…
展开
-
河南萌新联赛2024第(四)场:河南理工大学 I - 马拉松
小明生活在一个名为running的国家,该国家由 n 个城市组成,编号从 1 到 n,还有 n−1 条双向道路连接着这些城市。这个国家是一个热爱跑步的国家,因此每天都会在一对城市 (u ,v) 之间举办一次马拉松,从 u 作为起点, v 作为终点,且 u!小明需要用最短的路径到达从 u 到达 v(注意 (u ,v) 和 (v ,u) 是不同的马拉松)。令小明头疼的是该国家有两个城市 x 和 y,当小明经过 x 城市后又跑到 y 城市,那么该城市的警察就会阻止小明继续参加比赛。原创 2024-08-07 18:01:17 · 440 阅读 · 0 评论 -
河南萌新联赛2024第(三)场:河南大学 I - 游戏
特别地,在节点k处藏有一把钥匙,一旦取得这把钥匙,就可以解锁所有状态为0的边,使其变为可通行状态。给定一个无向图,包含n个节点和m条边。:从节点1出发,找到一条到达节点n的路径,使得这条路径上的总花费最小。,表示 到 b_i之间存在一条无向边,通过该边花费。输出节点 1 到 n 的最小花费,如果无法到达,输出。,分别表示节点数,边数,钥匙所在节点。,取值仅为 0 或 1。原创 2024-07-31 19:27:13 · 457 阅读 · 0 评论 -
河南萌新联赛2024第(一)场:河南农业大学 C - 有大家喜欢的零食吗
每个小朋友只能选择一个,但老师并不知道小朋友们喜欢什么类型的零食大礼包,因此,老师让小朋友们分别说出了他们喜欢的零食大礼包都有哪些,老师希望能根据小朋友们的叙述来让所有的小朋友们都能吃到他们喜欢的零食。若并非所有的小朋友都能吃到自己满意的零食,请问老师最少还应购买多少份零食大礼包来保证所有的小朋友都能吃到自己满意的零食。反之,则在第一行输出“No”(不带双引号),并在第二行输出老师还应购买的零食大礼包的最少的个数。若所有的小朋友都能吃到自己喜欢的零食,则输出 “Yes”(不带双引号);原创 2024-07-18 08:58:27 · 321 阅读 · 0 评论 -
2023河南萌新联赛第(六)场:河南理工大学 C - 旅游
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K。小C喜欢旅游,现在他要去DSH旅游,DSH里有nnn个城市和 $n-1$ 条双向道路(每条道路长度为1),每条道路连接两个城市,并且任意两个城市都可以通过这些的道路互相到达。现在小C要使用魔法指定传送到DSH里的一个城市,作为他旅游的出发城市,小C旅游遵从以下原则:原创 2023-08-22 16:23:45 · 663 阅读 · 0 评论 -
2023河南萌新联赛第(四)场:河南大学 F - 小富的idea
卷王小富最近又在内卷,并且学了一门新的技能:书法,但是不幸的是在国庆节的书法大赛上,小富不小心打翻了墨水瓶,导致很多墨滴溅在了他的书法纸上,看着墨水不断扩散,浸透了他的书法纸,小富突然萌生了一个想法:我能不能知道某时刻纸上一共有多少墨块? 我们假设墨滴是同时溅在纸上的,并且它们起始大小都为 000,由于墨滴大小不同,因此它们的扩散速度也不同,姑且假设墨滴都是按圆形扩散,如果两个或以上墨滴在扩散过程中相遇,那么就称它们为一个墨块(单独一个墨滴也是墨块),并且假设墨滴相遇不影响它的扩散,对于任原创 2023-08-09 17:51:00 · 1169 阅读 · 0 评论 -
2023河南萌新联赛第(二)场:河南工业大学 F - 最短距离
# [2023河南萌新联赛第(二)场:河南工业大学 F - 最短距离](https://ac.nowcoder.com/acm/contest/61132/L)>时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld#### 题目描述 给定一棵包含 $n$ 个顶点的树 $T$ ,以及 $m$ 个查询请求。每个查询包含三个参数 $:x、y$ 和 $k$。其中 $x$ 和 $y$ 是树中的两个顶点,$k$原创 2023-07-28 20:18:09 · 247 阅读 · 0 评论 -
2023河南萌新联赛第(一)场:河南农业大学 H - 迷宫探险
在与boss的最终决战之后,小蓝来到了冒险的最后一关,在他面前有一个n*m的迷宫,迷宫中道路用'.'表示,墙壁则由‘#’表示。小蓝初始在[1,1]的位置,他只有到达[n,m]才能开启最终的宝藏。小蓝现在迫不及待的想要开启宝藏,所以他想最短的时间内走出迷宫。现在迷宫内有一种特殊的装置 –“弹射器”。弹射器的格子用’*’表示。当走到有弹射器的一格时,小蓝必须选择一个方向,弹射器会让他沿着这个方向弹射x个距离,不同弹射器的弹射距离可以不同。弹射后的格子如果超过迷宫边界或者是墙壁则不能选择这个方向。原创 2023-07-22 08:08:17 · 131 阅读 · 0 评论 -
2022河南萌新联赛第(七)场:南阳理工学院 J - 最短路
# [2022河南萌新联赛第(七)场:南阳理工学院 J - 最短路](https://ac.nowcoder.com/acm/contest/39585/J)#### 因为有重边,所以我们将所有的边存起来,然后搞一个最小生成树,在生成的过程中记一下他们公共的节点,然后在查询的时候跑一个LCA算法,可以在$O(nlogn)$的总体时间复杂度下的出答案原创 2023-07-10 14:52:47 · 152 阅读 · 0 评论 -
第十四届蓝桥杯大赛软件赛省赛C/C++大学B组 试题 I: 景区导游
第十四届蓝桥杯大赛软件赛省赛C/C++大学B组 试题 I: 景区导游LCA模板题,多求几次LCA而已原创 2023-04-10 12:59:34 · 1100 阅读 · 1 评论 -
Codeforces Round 442 (Div. 2) D. Olya and Energy Drinks
# [Codeforces Round 442 (Div. 2) D. Olya and Energy Drinks](https://codeforces.com/contest/877/problem/D)Note, that bfs can find right answer, but works in O(n·m·k). It's too slow.We'll store all not visited cells in set. For each row and column we'原创 2023-04-04 17:25:53 · 88 阅读 · 0 评论 -
LiberOJ - 119. 单源最短路
# [LiberOJ - 119. 单源最短路](https://loj.ac/p/119)$Dijsktra,vector存图$$Dijkstra$ **堆优化版** 的 **时间复杂度** 为 $O(mlogn)$原创 2022-10-13 21:25:10 · 112 阅读 · 0 评论 -
第十三届蓝桥杯大赛软件赛决赛C/C++大学B组 H: 机房
H: 机房 —— 参考地址终于算是拿下国赛LCA模板题了思路:给你一个树,求任意两点之间的所有点——直接连接点的数量和,可以说是用LCA。预处理从根节点到子节点的度数之和,然后利用LCA,计算出它们的公共祖先,减去2倍的根节点到公共祖先的度数和,最后在加上公共祖先本身的度数。...原创 2022-08-26 14:36:23 · 718 阅读 · 0 评论 -
2022河南萌新联赛第(五)场:信息工程大学 B - 交通改造
将路口视为点,道路视为边建图,裸的最小生成树问题。原创 2022-08-08 13:17:37 · 106 阅读 · 0 评论 -
2022河南萌新联赛第(四)场:郑州轻工业大学 G - 迷宫
固定源点与汇点,最短路的各种算法都可以写,这道题用双端队列比较好写,但是我用的是优先队列。最短路问题,两两建边,如果目标点为花那么边权为。原创 2022-08-02 15:45:47 · 161 阅读 · 0 评论 -
2022河南萌新联赛第(三)场:河南大学 I - 旅行
解法将每个城市看成两个城市,缴费的,未缴费的,然后让缴费于未缴费的城市建边,跑最短路即可。题意从城市1到城市n,每隔一天多花费w。原创 2022-07-24 19:29:04 · 197 阅读 · 0 评论 -
HDU - 2586 How far away ?(倍增LCA)
倍增法 预处理(nlogn) + 查询(logn)原创 2022-07-23 01:36:13 · 126 阅读 · 0 评论 -
POJ - 2031 Building a Space Station(Prim)
POJ - 2031 Building a Space Station#include <iostream>#include <cstdio>#include <cmath>#include <cstring>using namespace std;const int N = 110;double x[N], y[N], z[N], r[N];double g[N][N], d[N];bool st[N];int main(){ in原创 2022-04-11 14:53:18 · 398 阅读 · 0 评论 -
ZOJ - 1586 QS Network(Prim)
ZOJ - 1586 QS Network(Prim)#include <iostream>#include <cstring>using namespace std;const int N = 510;int n,g[N][N],dist[N],p[N];bool st[N];int prim(){ memset(dist,0x3f,sizeof dist); memset(st,0,sizeof st); dist[1]=0; i原创 2022-04-11 13:16:53 · 103 阅读 · 0 评论 -
POJ - 1611 The Suspects(并查集)
POJ - 1611 The Suspects思路:0是传染源,问和0有关系的数字有多少个,直接或者间接#include<iostream>#include<cstdio>using namespace std;int a[30010],f[30010],book[30010];int find(int x){return f[x]==x?x:f[x]=find(f[x]);}void merge(int v,int u){ int x=find(v); int原创 2021-08-28 23:45:20 · 93 阅读 · 0 评论 -
POJ - 2236 Wireless Network(并查集)
POJ - 2236 题意:在平面坐标系上有n个坏掉的电脑,电脑之前只有距离小于d才能通信(在两台电脑都修好的情况下),有两个查询第一种O x即修理电脑x,第二种S x y即查询x电脑和y电脑之间是否可以通信(间接的也可以)。#include<iostream>#include<cstdio>using namespace std;int f[1010],n,d;struct note{ double x,y;}q[1010];char op;boo原创 2021-08-27 18:36:30 · 125 阅读 · 0 评论 -
POJ - 2492 A Bug‘s Life(并查集)
POJ - 2492 A Bug’s Life题目意思就是 给定n只虫子 不同性别的可以在一起 相同性别的不能在一起 给你m对虫子 判断中间有没有同性别在一起的;我们把同性的放到一个集合里 如果一个集合里出现了异性 则说明存在同性恋在一起 假设 x 为一种性别 x+n为与其相反的性别若a,b为同性 的 我们则可以把判断 (a,b+n)(b,a+n)为异性反之亦然;#include<iostream>#include<cstdio>using namespace s原创 2021-08-27 18:41:50 · 111 阅读 · 0 评论 -
HDU-1272 小希的迷宫(并查集)
上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提高难度,小希希望任意两个房间有且仅有一条路径可以相通(除非走了回头路)。小希现在把她的设计图给你,让你帮忙判断她的设计图是否符合她的设计思路。比如下面的例子,前两个是符合条件的,但是最后一个却有两种方法从5到达8。Inp.原创 2021-02-20 10:21:37 · 108 阅读 · 0 评论 -
HDU - 4496 D-City(并查集)
HDU - 4496 D-City#include<iostream>#include<cstring>using namespace std;const int N = 1000010;struct note{ int a,b;}p[N];int f[N],ans[N];int find(int x){ if(x==f[x]) return x; else return f[x]=find(f[x]);}int main(){ int n,m;原创 2021-08-27 18:44:55 · 81 阅读 · 0 评论 -
HDU - 1213 How Many Tables(并查集)
HDU - 1213 How Many Tables(并查集)#include <stdio.h> int f[1010],n,m; //这里是初始化,非常地重要,数组里面存的是自己数组下标的编号就好了。 void init() { for(int i=1;i<=n;i++) f[i]=i;} //这是找爹的递归函数,不停地去找爹,直到找到祖宗为止,其实就是去找犯罪团伙的最高领导人,//“擒贼先擒王”原则。int getf(int v)原创 2022-03-24 12:20:37 · 107 阅读 · 0 评论 -
POJ - 1182 食物链(并查集)
POJ - 1182 食物链这道题目我们主要是要开三个拓展的域,也就是天敌域,同类域,以及捕食域.1.如果x,y是同类,但是x的捕食域有y,那么错误2.如果x,y是同类,但是x的天敌域有y,那么错误3.如果x是y的天敌,但是x的同类域中有y,那么错误4.如果x是y的天敌,但是x的天敌域中有y,那么错误//这里我们将三个域,分别转化为了n,n+n,n+n+n.因为读入方面特别烦.#include<stdio.h>int fa[200000];int n,m,k,x,y,ans;原创 2021-08-23 20:07:42 · 82 阅读 · 0 评论 -
POJ - 3169 Layout(多源点建图)
POJ - 3169 Layout(多源点建图)因为求的是最大距离,所以用最短路,要找出形如x[i]<=x[j]+c的不等式①序号大的牛不可能在序号小的牛的前面 -> x[i]<=x[i+1]; i+1->i , 0②好感度 -> x[b]-x[a]<=c -> x[b]<=x[a]+c; a->b , c③反感度 -> x[b]-x[a]>=c -> x[a]<=x[b]-c. b->a , c还原创 2022-03-22 22:14:49 · 372 阅读 · 0 评论 -
HDU - 4370 0 or 1(Spfa,Dijkstra)
HDU - 4370 0 or 1(Spfa,Dijkstra)Spfa#include<iostream>#include<cstring>#include<queue>using namespace std;const int N = 310;int n,g[N][N],dist[N];bool st[N];void Spfa(int s){ queue<int> q; memset(dist,0x3f,sizeof原创 2022-03-19 16:05:15 · 219 阅读 · 0 评论 -
HDU - 4725 The Shortest Path in Nya Graph(虚拟点建图)
HDU - 4725 The Shortest Path in Nya Graph(虚拟源点)首先把每一层映成一个点,即第1层代表第n+1个节点如此类推,每一层与层内的建立一条权值为0的有向边,即add(i,x+n,0),然后点与点之间建立一条无向边这没什么好说了,最重要一步就是,第i层的所有点必须要与第i+1层和第i-1层建立一条有向边,即add(x+n-1,i,c),add(x+n+1,i,c)。Dijkstra#include<cstdio>#include<cstri原创 2022-03-16 19:47:09 · 554 阅读 · 0 评论 -
POJ - 1847 Tram(Floyd)
POJ - 1847 Tram(Floyd)#include<iostream>#include<cstring> using namespace std;const int N = 110;int g[N][N];int main(){ memset(g,0x3f,sizeof g); int n,A,B;cin>>n>>A>>B; for(int i=1;i<=n;i++) { int k;cin>>原创 2022-03-16 16:32:58 · 157 阅读 · 0 评论 -
POJ - 2240 Arbitrage(Floyd变型)
POJ - 2240 Arbitrage(Floyd变种)题意:有n种类型的货币求是否存在经过兑换能增值。#include<iostream>#include<cstring>#include<map>using namespace std;const int N = 110;double g[N][N];map<string,int> Si;int main(){ int T=1; while(T) { int n;cin&g原创 2022-03-14 21:40:20 · 248 阅读 · 0 评论 -
POJ - 3660 Cow Contest(Floyd传递闭包)
POJ - 3660 Cow Contest(Floyd传递闭包)#include<iostream>using namespace std;const int N = 110;int w[N][N];int main(){ int n,m;cin>>n>>m; while(m--) { int a,b;cin>>a>>b; w[a][b]=1; } for(int k=1;k<=n;k++) for(in原创 2022-03-14 21:26:15 · 285 阅读 · 0 评论 -
POJ - 3268 Silver Cow Party(Dijkstra,Spfa)
POJ - 3268 Silver Cow Party(Dijkstra)Dijkstra邻接矩阵#include<iostream>#include<cstring>using namespace std;const int N = 1010;int n,m,x;int g[N][N],rg[N][N],dist[N],rdist[N];bool st[N];void dijkstra(int a[N][N],int dist[]){ memset(st,f原创 2022-03-13 20:30:09 · 539 阅读 · 0 评论 -
POJ - 2387 Til the Cows Come Home(Dijkstra,Spfa)
POJ - 2387 Til the Cows Come Home(最短路)题目大意:nnn个点mmm条边的无向图,求111到nnn的最短路径。Dijkstra邻接矩阵存图#include<iostream>#include<cstring>using namespace std;const int N = 1010;int n,m,g[N][N],dist[N]; // 存储1号点到每个点的最短距离bool st[N]; // 存储每个点的最短路是否已经确原创 2022-03-10 16:45:22 · 235 阅读 · 0 评论 -
POJ - 2949 Word Rings(SPFA判正环,01分数规划)
http://poj.org/problem?id=2949#include<cstdio>#include<cstring>#include<vector>#include<queue>using namespace std;typedef pair<int,int> PII;const int N = 710;vector<PII> g[N];double dist[N];int cnt[N];bool s原创 2022-02-11 15:02:03 · 301 阅读 · 0 评论 -
POJ - 2230 Watchcow(欧拉回路)
POJ - 2230 Watchcow(欧拉回路)#include<cstdio>#include<stack>using namespace std;const int N = 10010, M = 50010;int h[N],e[M*2],ne[M*2],idx=1;int n,m;stack<int> s,ans;void add(int a,int b){ e[idx]=b;ne[idx]=h[a];h[a]=idx++;}void e原创 2022-01-26 17:15:00 · 261 阅读 · 0 评论 -
POJ - 1734 Sightseeing trip(Floyd传递闭包)
POJ - 1734 Sightseeing trip#include<iostream>#include<cstring>#include<vector>using namespace std;const int N = 110, INF = 0x3f3f3f3f;int d[N][N],g[N][N],pos[N][N];vector<int> path;void get_path(int i,int j){ if(p原创 2022-01-23 22:08:09 · 202 阅读 · 0 评论 -
POJ - 1094 Sorting It All Out(传递闭包)
POJ - 1094 Sorting It All Out#include<cstdio>#include<cstring>const int N = 26;int n,m;bool d[N][N],st[N];int check(){ for(int i=0;i<n;i++) if(d[i][i]) return 2; for(int i=0;i<n;i++) for(int j=0;j<i;j++) if(!d[i][j原创 2022-01-20 18:35:29 · 213 阅读 · 0 评论 -
POJ - 3662 Telephone Lines(双端队列+二分)
POJ - 3662 Telephone Lines题目描述到nnn有kkk条边可以免费升级,因此只需要求111~NNN的所有路径中第kkk + 111大的值的最小值,是最大最小值模型,因此可以使用二分求解对于区间[0,1000001][0,1000001][0,1000001]中的某一个点xxx:check(x)check(x)check(x)函数表示:::从111走到NNN,最少经过的长度大于xxx的边数的数量是否小于等于kkk,若是则返回truetruetrue,否则返回falsefa原创 2022-01-20 16:22:23 · 322 阅读 · 0 评论 -
POJ - 2449 Remmarguts‘ Date(A∗优化算法)
POJ - 2449 Remmarguts’ DateA∗A∗A∗ 优化算法采用DijkstraDijkstraDijkstra最短路思想,每次扩展最短的路径,第 kk 次到达终点时的路径长度即为第 kkk 短路的长度。由于算法相当于同时进行 kkk 次单元最短路,时间和空间都可能会超限,因此 预处理每个点到终点的最短距离作为估价函数,利用 A∗A∗A∗ 算法优化。复杂度为 O(nklogn)O(nklogn)O(nklogn)。#include<cstdio>#includ原创 2022-01-17 19:02:55 · 135 阅读 · 0 评论 -
POJ - 3635 Full Tank? (Dijkstra)
POJ - 3635 Full Tank?#include <cstring>#include <cstdio>#include <queue>using namespace std;typedef pair<int, int> PII;const int N = 1010, C = 110, M = 20010;int n, m;int h[N], e[M], w[M], ne[M], idx;int price[N];int d原创 2022-01-16 18:41:44 · 529 阅读 · 0 评论