K-th Path CodeForces - 1196F】的更多相关文章

题目链接:https://vjudge.net/problem/CodeForces-1196F 题意:从图中找出第K短的最短路,最短路:从一个点到另一个的最短距离. 思路:题目说了,每两个点之间的边小于等于1,那么如果我们只取K条边, 那么顶点数  V∈[K,2K],所以我们一定可以在K条边中的到第K短的最短路. 当然我们先要把所有变来一个sort,取权值小的K条边. 之后跑一个floyd就可以了,然后把所有最短路存下来,找出第K小的最短路. ps(这里的编号很方便,我是参考另一个大佬的,这里…
题目链接: https://codeforces.com/contest/1196/problem/F 题意: 在无向图的所有最短路点对中,求出第$k$大 数据范围: $ 1 \leq k \leq 400$ 分析: 其实只需要保留$k$条边,这样已经有了$k$个点对的距离小于排好序后第$k$条边的距离 再调用弗洛伊德算法$O(k^3)$ ac代码: #include<bits/stdc++.h> #define ll long long #define PI acos(-1.0) #defi…
传送门 发现到 $K$ 不大,考虑有什么和 $K$ 有关的结论 发现答案似乎只会经过前 $K$ 小的边,如果边权第 $K$ 小的边有多条那么可以任意取 证明挺显然的吧,首先如果走了边权排名大于 $K$ 的边那么总的排名也一定大于 $K$,并且如果经过第 $K$ 名的边那么我们就只要考虑只走这一条边的路径,不然总路径排名也一定大于 $K$ 那么对于第 $K$ 名的边我们不用考虑它对图的贡献,任取即可 然后把有用的边和点拿出来离散化一下,那么总点数小于等于 $800$ ,直接 $floyd$ 然后对…
https://codeforces.com/contest/59/problem/E 原来以为不会..看了题解发现貌似自己其实是会的? 就是拆点最短路..拆成n^2个点,每个点用(i,j)表示,表示这样的状态:原图中当前在j,前一步在i 然后就跑bfs,两点(i1,j1),(i2,j2)之前有边,当且仅当j1=i2,且(i1,j1,j2)没有被ban掉,且原图中(i2,j2)间有边:用一些set之类的来存储某三元组是否被ban 复杂度好像不是很对?然而仔细想一下可以发现转移最多总共只有O(nm…
大意: n结点有向有权图, m个操作, 增加若干边的权重或询问源点为1的单源最短路. 本题一个特殊点在于每次只增加边权, 并且边权增加值很小, 询问量也很小. 我们可以用johnson的思想, 转化为差值最短路, 这样边权就在n-1以内, 可以直接暴力跑桶优化dijkstra. #include <iostream> #include <algorithm> #include <cstdio> #include <math.h> #include <s…
大意: 给定无向图, 求任意两点间所有最短路经过的边数 刚开始想先用floyd跑出最短路, 然后在DAG上DP, 交了1发, 发现会算重复 贴一下题解的做法 #include <iostream> #include <algorithm> #include <cstdio> #define REP(i,a,n) for(int i=a;i<=n;++i) using namespace std; const int N = 510, INF = 0x3f3f3f3…
题意: 给出 n 个数,选取其中若干个数分别组成至多 k 组,要求每组内最大值与最小值的差值不超过5,求最后被选上的总人数. 题解: 将a[1∼n] 从小到大排序, f[i][j] 表示到第 i 个数为止,已经组成 j 组,最多可以包含多少个数. 那么,考虑第 i 个数选取与否,如果不选,那么 , 如果选,那么必然是第 i 个数所在组人数加上前面那些组人数,假设 p 表示距离 a[i]左侧最远的那个位置(满足 ),这里是指p之前的那些组的人数 题目链接: https://cn.vjudge.ne…
大意: 3*n矩阵, 求从(1,1)->(3,n)路径最大点权和. 核心观察是每个点回头一定不会超过1, 这是因为只有三行, 若回头两格一定是$9$个位置全走, 显然可以找到一种只会头一格的方案与回头两格的方案等价. #include <iostream> #include <sstream> #include <algorithm> #include <cstdio> #include <math.h> #include <set&…
Codeforces 1103 C. Johnny Solving 题目大意: 有一张 \(n\) 个点 \(m\) 条边的简单无向图,每个点的度数至少为 \(3\) ,你需要构造出两种情况之一 一条长度至少为 \(\frac{n}{k}\) 的简单路径 \(k\) 个大小大于 \(3\) 且不为 \(3\) 的倍数的简单环,且满足每个环中至少有一个点只属于这个环. 如果都构造不出来则输出 \(-1\) . 解题思路: 首先必定可以构造出来,\(-1\) 就是用来迷惑你的. 从无向图生成树的角度…
K. Fling Fling is a kind of puzzle games available on phone.This game is played on a board with 7 rows and 8 columns. Each puzzle consists of a set of furballs placed on the board. To solved a puzzle, you need to remove the furballs from board until…