摘要: 模板题,但码量大。本题主要考察的是存图的方式。 图的类别 有向图:简单来说是指一副具有方向性的图。例如节点 \(a\) 指向节点 \(b\) ,则只能从 \(a\) 走到 \(b\),而不能从 \(b\) 走到 \(a\)。 无向图:若一个图中每条边都是无方向的,则称为无向图。如果一个图为无向图,则 阅读全文
posted @ 2024-06-11 20:42 Arthur_Douglas 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 不加弧优化 #include <bits/stdc++.h> #define int long long using namespace std; const int N = 10005; int n, m, s, t; struct edge {int v, nxt, val;} e[N * 2] 阅读全文
posted @ 2024-02-22 12:10 Arthur_Douglas 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 如题 题目大意 有一张长宽是 \(n\) 的图,现在要从字符 \(A\) 到字符 \(B\)。其中 \(x\) 则是障碍,问载行走的过程中最少 \(90\) 度转弯多少次。 思路 易错点 这道题有一个坑那就是先搜到的路不一定是转弯转的最少的。 常规思路 按照常规的思路因为这道题需要求路径,所以用BF 阅读全文
posted @ 2024-02-20 18:07 Arthur_Douglas 阅读(61) 评论(1) 推荐(1) 编辑
摘要: #include<bits/stdc++.h> #include<windows.h> #include <conio.h> using namespace std; void put(string &text, int interval) { int n = text.length(); for 阅读全文
posted @ 2024-01-25 16:16 Arthur_Douglas 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 高斯消元 高斯消元是线性代数规划中的一个算法,可用来为线性方程组求解,高斯消元法可以用在电脑中来解决数千条等式及未知数。 ps:若要解出 \(n\) 个未知数的话,则需要 \(n\) 个有意义的方程。 例如有 \(n\) 个方程组,其中一个是 \(0 \times x = 0 \times y\) 阅读全文
posted @ 2024-01-25 11:28 Arthur_Douglas 阅读(59) 评论(0) 推荐(0) 编辑
摘要: #include <bits/stdc++.h> #define int long long #define MAXN 500010 using namespace std; struct edge { int nxt,to; }; edge e[MAXN*2]; int h[MAXN],ei; v 阅读全文
posted @ 2024-05-20 22:30 Arthur_Douglas 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 题意简述 给你一个长 \(n\) 宽 \(m\) 的 \(01\) 迷宫,从 \((1,1)\) 开始要走到 \((n,m)\)。如果能走那么输出最短路和路径(路径用 \(L R U D\) 表示),否则输出 \(-1\) 。有 \(t\) 组数据。 如果当前格子是 \(0\) 那么你只能走到 \( 阅读全文
posted @ 2024-04-09 17:26 Arthur_Douglas 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 题意简述 有一张 \(n\) 个节点的无边图,图在连通之前每次随机抽取一个点然后建边,求期望操作次数(即最大多少次)。 思路 这道题似乎和图论没什么关系,首先我们看 \(n\) 个球抽出一个的概率是 \(\frac{1}{n}\) ,那么抽第二个时概率是 \(\frac{1}{n-1}\) 以此类推 阅读全文
posted @ 2024-03-12 20:52 Arthur_Douglas 阅读(9) 评论(0) 推荐(0) 编辑
摘要: P9901 『PG2』弯曲半平面直线同向图最大流 题解 思路 正解想不出,只好用网络流了 网络流简介请戳这儿。这道题数据有点大用 EK 求最大流似乎过不了,所以本蒟蒻采用 Dinic 算法。 Dinic 算法 Dinic 算法相当于 EK 的优化。在原基础找增广路的基础上添加了一个分层操作,再通过深搜找阻塞流。 分层 从原点开始我们把可以通过一步到达的点 阅读全文
posted @ 2024-02-23 16:33 Arthur_Douglas 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给一个 \(10 × 10\) 字符串矩阵,求从 \(L\) 开始(不经过 \(R\) )到 \(B\) 的短路径。 思路 这道题因为是求最短,所以用 \(DFS\) 比较麻烦,于是我用的是 \(BFS\) 做。遇到障碍则跳过,到终点直接退出就行了。 code #include<iostr 阅读全文
posted @ 2024-01-30 18:28 Arthur_Douglas 阅读(47) 评论(0) 推荐(0) 编辑
摘要: void pushup(int tr){ seg[tr]=seg[tr*2]+seg[tr*2+1]; } void build(int tr,int l,int r){ if(l==r){ seg[tr]=a[r]; return ; } int mid=(l+r)/2; build(tr/2,l 阅读全文
posted @ 2024-01-28 13:36 Arthur_Douglas 阅读(12) 评论(0) 推荐(0) 编辑
摘要: #include<bits/stdc++.h> #define int long long using namespace std; int len,n,a[100009],g[100009]; signed main(){ scanf("%ld",&n); for(int i=1;i<=n;i++ 阅读全文
posted @ 2024-01-27 15:49 Arthur_Douglas 阅读(8) 评论(0) 推荐(0) 编辑