
图论
文章平均质量分 76
JXNU_SONG
这个作者很懒,什么都没留下…
展开
-
The 2019 China Collegiate Programming Contest Harbin Site E. Exchanging Gifts
E. Exchanging GiftsLink我们首先考虑得到 SnS_nSn 之后如何统计答案。那么实际上也就是问最多可以组成多少数对,数对中两个数字不能相同。那么首先设数组中出现次数最多的数字的出现次数为 cntcntcnt。若 2×cnt≤n2×cnt≤n2×cnt≤n ,则每个元素都能找到配对,答案就是 nnn 。证明如下:我们让相同的元素都摆在一起:如: [7,7,7,2,2,2,6,6][7,7,7,2,2,2,6,6][7,7,7,2,2,2,6,6] ,那么我们把所有元素都向右.原创 2021-11-10 17:07:03 · 471 阅读 · 0 评论 -
2021 ICPC 四川省赛 L - Spicy Restaurant(多源BFS,DP)
Spicy Restauranthttps://codeforces.com/gym/103117/problem/L题目大意:给一个 nnn 个点 mmm 条边的点权图。再给出 qqq 个询问,对于每个询问给出两个变量 p,ap,ap,a ,问从 ppp 开始走,到最近的点权不超过 aaa 的点的最短路是多少。注意到这里的点权 www 十分小,我们可以从这里下手考虑。假如我们设 dp[i][j]dp[i][j]dp[i][j] 为从 iii 点出发,到点权不超过 jjj 的点的最短路长度,我们会发.原创 2021-10-12 15:53:33 · 616 阅读 · 0 评论 -
DINIC模板
struct edge{int to,cap,rev;};vector<edge> G[MAX_N];int level[MAX_N];int iter[MAX_N];void add_edge(int from,int to,int cap){ G[from].push_back( (edge){to,cap,G[to].size()} ); G[to].push_back( (edge) {from,0,G[from].size()-1});}void bfs(int原创 2020-07-14 17:00:53 · 151 阅读 · 1 评论 -
G. Gasoline (二分+最大流)
G. Gasoline题目连接题目大意:有 ppp个加油站, rrr 个运油点,每个加油站都有个需求值,每个运油点都有储存的油量值。 ccc 条连边,每条边包含三个信息 (v,u,t)(v, u, t)(v,u,t) 表示从第 uuu 个运油点可到达第 vvv 号加油站,且需要花费时间 ttt 。现在问要满足所有加油站的需求,走的花费最长时间的路最小是多少。解:我们首先将边按照时间花费为键值从小到大排序,然后对存边的数组去二分,每次将下标范围在 [0,mid][0, mid][0,mid] 内的边.原创 2021-05-01 20:56:13 · 161 阅读 · 0 评论 -
牛客练习赛80 D 分组 倍增 + 二分 + 强连通分量
D 分组 题目描述你有一张 n 个点的有向图,我们定义一个有向图的重量是该图内所有强连通分量大小(即其节点数量)的平方和。有 m 条边,依次编号为 1,2,…,m。现在需要将其分成若干组,满足:1.每一组内边的编号连续;2.对于每一组边,将其加入原图内得到 G,需要满足 G 的重量不能超过 k,其中 k 是给定的阈值。请求出最小分组的数量。输入描述:一行三个整数 n,m,k,分别表示图中节点数,给出的边数和阈值的大小;接下来 m 行,每行两个整数 u,v,表示一条从 u 到 v 的有向边.原创 2021-04-14 20:27:16 · 177 阅读 · 0 评论