Description A county consists of n cities (labeled 1, 2, …, n) connected by some bidirectional roads. Each road connects a pair of distinct cities. A robot company has built maintenance points in some cities. Now, they need your help to write a progr…
https://vjudge.net/problem/CSU-2005 题意:给出带权值的图,图上有一些特殊点,现在给出q个询问,对于每个询问,输出离该点最近的特殊点,如果有多个,则按升序输出. 思路:因为有多次查询,不可能对于每个询问都去跑一遍最短路.必须以特殊点为起点跑一遍最短路,但是这样路径的记录就是问题了.正解是用bitset来记录状态,在最短路松弛更新状态时,继承前驱节点即可. #include<iostream> #include<algorithm> #include…
题意 \(n​\) 个点的有向图,边权 \(\in \{1, 2, 3, 4\}​\) ,\(m​\) 次修改边权/加边/删边,\(q​\) 次询问:以 \(s_i​\) 为起点,输出它到其他点的最短路. \(n ≤ 5 \times 10^2 ,m \le 5 \times 10^4 , q \le 5 \times 10^3\) 题解 这图很密,如果修改就做一遍 \(Dijsktra\) 是 \(O((n + m) \log n)\) 的复杂度,显然是过不去的. 但是发现边权似乎不大,我们考…
Description 众所周知,CSU(California State)University) 的上课地点距离学生公寓很远,对于爱睡懒觉的小Z来说,每天去上课就成了一件非常头疼的事,如果有早课的话更是如此.为了能让自己多睡一会,同时不至于上课迟到,小Z决定规划一条去新校的路线. 去新校的路上有很多条双向道路,每条道路连接了两个路口,且直接连接两个路口的道路只有一条,不存在一条道路的两端为同一个路口,每条道路都有一定的距离.同时道路两侧商铺众多,在提供了美食的同时也造成了一定程度的拥堵,在小Z…
题目传送门 https://loj.ac/problem/6252 https://lydsy.com/JudgeOnline/problem.php?id=5109 题解 首先跑最短路,只保留 \(dis[v] = dis[u] + w\) 的边,形成一个 DAG. 如果只有一个点的话,如何判断这个点是否是必经之点.一个很简单的方式是判断 \(S\to A \to T\) 的方案数是否等于 \(S\to T\) 的方案数. 但是这里的要求是两个点,那么就是 \(S\to A \to T\) 的…
问题描述 X城有一个含有N个节点的通信网络,在通信中,我们往往关心信息从一个节点I传输到节点J的最短路径.遗憾的是,由于种种原因,线路中总有一些节点会出故障,因此在传输中要避开故障节点. 任务一:在己知故障节点的情况下,求避开这些故障节点,从节点I到节点J的最短路径S0. 任务二:在不考虑故障节点的情况下,求从节点I到节点J的最短路径S1.第二最短路径S2. 输入文件 第1行: N I J (节点个数 起始节点 目标节点) 第2-N+1行: Sk1 Sk2-SkN (节点K到节点J的距离为SkJ…
题意:求三个序列的最长公共子序列. 思路:一开始以为只要求出前两个的LCS,然后和第三个再求一遍LCS就是答案了.但是样例就对我进行啪啪啪打脸了.实际上就跟两个序列的差不多,换成三维的就行了. 代码:需要注意的是max速度比较慢,最后改成if #include<stdio.h> #include<string.h> #include<iostream> using namespace std; ; int dp[N][N][N]; char a[N],b[N],c[N]…
参考 http://www.cplusplus.com/reference/bitset/bitset/ https://blog.csdn.net/snowy_smile/article/details/79120063 bitset bitset<MAXN> b; b.any() // b中是否存在置为1的二进制位. b.none() // b中是否不存在置为1的二进制位. b.count() // b中置为1的二进制位的个数. b.size() // b中二进制位数的个数. b[pos]…
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1806 题目大意: N个点M条有向边,给一个时间T(2≤n≤10,1≤m≤n(n-1),1≤T≤104),每条边的花费是关于t的一次函数Ci*t+Di,而你能选择出发时间t(0<=t<=T),走过边视为瞬间到达,不影响t,f(t)表示在时间t开始从1出发到n的最小花费,求 题目思路: [最短路][数学] 这题首先有个积分符号被吓到了,但是其实不难,N才10. 很容易想到枚举t,求1到…
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1808 题目大意: N个点M条无向边(N,M<=105),每条边属于某一条地铁Ci(Ci<=109),每条边有一个耗时,如果乘Ci号线地铁到达一个节点换乘Cj号线地铁离开,还需要花费|Ci-Cj|时间. 求1到n的最小花费时间. 题目思路: [最短路][STL] d[u][Ci]表示从1到u,最后一条地铁是Ci号线的最小耗时.按照边做,每条边枚举上一个是从哪一条地铁坐过来的,更新答案…