【题解】P5304 [GXOI/GZOI2019]旅行者 一道利用 dijkstra 的很妙的图论题! 加深了我对于 dijkstra 的理解。 (于是在做完这道题两天后的模拟赛中遇到了和它套路几乎一样的,我却甚至没有想到用最短路……) 所以写个题解记录一下吧。 题目链接 [GXOI/GZOI2019]旅行者 - 洛谷 题意概述
链接:https://ac.nowcoder.com/acm/contest/26077/1031来源:牛客网 题目描述 Island 发生了一场暴乱!现在 Rinne 要和 Setsuna 立马到地上世界去。 众所周知:Island 是有一些奇怪的城镇和道路构成的(题目需要,游戏党勿喷),有些城镇之间用双向道路连接起来了,且
视频链接: Luogu P3806 【模板】点分治1 #include<iostream> #include<algorithm> using namespace std; const int N=10005; const int INF=10000005; struct node{int v,w,ne;}e[N<<1]; int idx,h[N]; //加边 int del[N],siz[N],mxs,sum,root;//求根 int dis[N],d[N],c
博客链接:https://www.codein.icu/learn-dijkstra/ Introduction Dijkstra 算法是用于求解非负权图单源最短路的经典算法。 市面上的大部分教程都仅仅停留在「如何实现 Dijkstra 算法」的层面。从应用角度,这当然无可厚非。但理解算法本身,也不失为一件乐事。 问自己这样几个问题: Di
套路题。 先不考虑额外的边跑一次最短路。 然后考虑一下额外的边,单独拿出来转移一次。 式子为 \(dis_u=min\{olddis_v+(u-v)^2,1\leq v \leq n\}\)。 简单的,把凸包建出来,二分最优点转移即可。 也就是做一次斜率优化 \(dp\)。 然后继续跑最短路,最短路可以同时 \(n\) 个节点一起跑。
链接:https://ac.nowcoder.com/acm/contest/26077/1034来源:牛客网 题目描述 “题目名称只是吸引你来做题的啦,其实和题目没什么卵关系:o(* ̄▽ ̄*)o” —— 历史——殿堂 wpy移情别恋啦,他不喜欢spfa了,现在他喜欢使用dij,但是他又发现了一个新的问题,dij
例题1.单源最短路径 dij 板子。(w36557658 原版 dij 代码! code #include<cmath> #include<queue> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define fi first #define se second using namespace std; typedef l
链接:https://ac.nowcoder.com/acm/contest/26077/1018来源:牛客网 题目描述 Farmer John is on a boat seeking fabled treasure on one of the N (1 <= N <= 100) islands conveniently labeled 1..N in the Cowribbean Sea. The treasure map tells hi
转自(稍加修改) 最小斯坦纳树,就是在一个无向连通图要花费最小的代价(边权和),连通给定的 \(k\) 个关键点(一般 \(k\le 10\)),这是一个组合优化问题。 这个问题可以用状压 DP 来解决,首先容易发现一个结论: 答案一定是树。你猜为啥叫最小斯坦纳树。 证明:如果答案存在环,则删去环上任意一条边,代
P1522 [USACO2.4] 牛的旅行 Cow Tours - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) dfs为图中的连通块染色 floyd求出任意两点的最短距离,不连通就INF 求出每个连通块中的每个点到达该连通块中其他点的所有最短路径(floyd求出)中的最大路径并记录,同时不断更新该连通块的直径,也就
B-Gaming_牛客小白月赛54 (nowcoder.com) 先把所有区间的权值加起来,考虑从覆盖住的区间中找一个不被覆盖的点,可以枚举删掉哪个点,删掉这个点造成的权值损失可以通过差分前缀和来得到。 const int N=1e6+5; typedef long long ll; int n,m; ll s[N]; ll tot; int main(){ scanf("%
P1462 通往奥格瑞玛的道路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 要求:在生命值不为负的条件下走到终点,要求路程中收费最大值的最小 二分收费值,如果某条边的权值小于等于二分值,那么就可以走这条边,否则不行 对每个二分的结果跑一遍diji,最短路为到达终点 的最少需要消耗的
https://www.luogu.com.cn/problem/P1821图论,最短路黄色题 思路: 主要就是比模板多了一个反向建图 我们首先想到的是从每个点都求一遍到终点的最短路,这样会加大时间复杂度。 所以,我们可以反向建图,直接把单终点最短路转为单源最短路,只需要跑两次最短路算法,显然是稳过的。(可以自
总体来说没有全切掉就比较遗憾,主要还是手速比较慢。 A.Everyone Loves to Sleep 题目描述: 原题面 题目分析: 考虑闹钟的数量很少,所以直接暴力计算出睡到每一个闹钟响的时间,然后取最小值就好了。 代码详解: 点击查看代码 #include<bits/stdc++.h> using namespace std; struct node{
P3454 OSI-Axes of Symmetry 题解 求多边形的对称轴 这是一道人类智慧题 顺时针或者逆时针转一圈,将 \(n\) 个点的多边形的角和边的值连在一起就得到了一个环,环长为 \(2n\) 我们只需要判断对应的边和角相等 具体地,我们用边长表示每条边,用两条邻边的叉积和点积代表以这个点为顶点的
2022HDU多校第四场 过程 三题签到完成,吉吉在看了11一会后将01秒了,这里是我dp不够熟练,只能让吉吉来了,我好菜呀(哭),然后就坐牢开始了,我们轮流卡02和11,最后4题结束,惨淡收场。02属于是没想明白,另外时间不够,而11属实是坐大牢,看着它被人过穿,我们却毫无头绪,再一次在签到题上卡了太多时间,
填写指令: fromelf --text -a -c --output=all.dis Objects\StepMonitor.axf 其中 "all.dis" 和 "Objects\StepMonitor.axf" 都是相对于 ".uvprojx" 所在目录而言的
链接 \(A:Ancestor\) 预处理出 \(A,B\) 上关键点的前缀 \(lca\) 和后缀 \(lca\) ,枚举删除的点求即可。 #pragma GCC optimize(3) #include<bits/stdc++.h> #define IL inline #define LL long long using namespace std; const int N=2e5+3; struct hh{ int to,nxt; }; int n,k,n
Day 1. Kyoto U Contest 2 F. Flatland Currency 考虑整个问题其实就是要背包,特殊性质是每个物品的权值 \(\leq 4\)。 先把相同权值的合并,然后每一类是一个凸函数,于是可以逐个卷积合并,复杂度是 \(\mathcal O(n\log n)\)。 题解做法是如果按照模 \(12\) 分类,则每一个都是凸函数,枚举
link。 算个 trash round,考场觉得就 T4 还可以,结果是个暴力题…… T1 是卡牌类模拟,T2 trivial 构造,T3 不知道为啥挂了,等我找到原因再更新一发。 D. possible:给定一棵以 \(1\) 为根的带边权有根树,再给出一些带权返祖边,多次询问两点间最短距离,保证树高最多 \(20\)。 注意到两个事
原文链接 一、求正权图的单源最短路 对于求正权图的单源最短路问题,我们一般使用Dijistra算法求解 Dijistra算法 Dijistra算法的基本思想是贪心。 我们可以先把所有点的距离设为一个无穷大的数,然后将起始点的\(dis\)设为一,每次找一个\(dis\)最小并且没有被标记过的点,然后将这个点
2022 牛客多校第二场题解+补充 《关于我和我的队友没有人会博弈和计算几何这档事》 《关于我数据结构已经写不动了这档事》 A Falfa with Polygon 以为是计算几何,结果是 dp。我用的是随机化。 考虑 \(f(s,i,j)\) 表示从 \(s\) 开始走了 \(i\) 条边现在在 \(j\) 点,那么 \[f(s,i,j)=
目录名人名言题目背包 HLP3461题目描述解题思路代码植树 HLP3915题目描述解题思路1. 数据分块2. 改进二分代码Cow and Fields CF1307D题目描述解题思路奇技淫巧二分做法代码 名人名言 Um_nik: Stop learning useless algorithms, go and solve some problems, learn how to use b
第4章 差分约束系统 算法简述 核心思想:将题目给定条件转化为形如\(s[i] - s[j] <= k\)的三角形不等式,然后用最短路求解 解题要点:感觉还是<=跑最短路好写点,据此, 在取\(a[i] - a[j] <= k\)的形式时,规则如下: 差分约束跑最短路,跑出的结果是所有解中的最大解 差分约束跑最长路,跑出的结
Given an m x n binary matrix mat, return the distance of the nearest 0 for each cell. The distance between two adjacent cells is \(1\) Solution 首先将所有的 \(dis\) 令成 \(-1\),然后把所有 \(0\) 的点 \(push\) 到队列里面,每次更新 \(dis[i][j]=-1\) 的点 点击查看代