首页 > TAG信息列表 > P5331
【洛谷P5331】通信
题目 题目链接:https://www.luogu.com.cn/problem/P5331 \(n\) 个排成一列的哨站要进行通信。第 \(i\) 个哨站的频段为 \(a_i\)。 每个哨站 \(i\) 需要选择以下二者之一: 直接连接到控制中心,代价为 \(W\); 连接到前面的某个哨站 \(j\) (\(j<i\)),代价为 \(|a_i-a_j|\)。 每个哨站只洛谷 P5331 - [SNOI2019]通信(CDQ 分治优化建图+费用流)
题面传送门 首先熟悉网络流的同学应该能一眼看出此题的建模方法: 将每个点拆成两个点 \(in_i,out_i\),连一条 \(S\to in_i\),容量为 \(1\) 费用为 \(0\) 的边 连一条 \(in_i\to T\) 容量为 \(1\) 费用为 \(W\) 的边,表示哨站 \(i\) 连向控制中心 连一条 \(out_i\to T\) 容量为 \(1\)P5331 [SNOI2019]通信
说在前面的话 今天异常颓废突发奇想,想要把自己之前这道题目的奇怪做法记录一下,可是发现洛谷已经有人捷足先登了。 题解 你发现对于每一个站点,它需要和前面的每一个站点连边,同时对于比他大的和比他小的权值计算方式不一样,我们就考虑用主席树优化建图,然后就好了。 代码 #include<bitLuogu P5331 [SNOI2019]通信
Link KM #include<cstdio> #include<cstring> #include<algorithm> using i64=long long; const int N=2007,inf=0x3f3f3f3f; int n,a[N],w[N][N],vis[N],A[N],B[N],slack[N],pre[N],mat[N]; int read(){int x;scanf("%d",&x);return x;} voiP5331 [SNOI2019]通信 [线段树优化建图+最小费用最大流]
这题真让人自闭…我EK费用流已经死了?… (去掉define int long long就过了) 我建的边害死我的 spfa 还是spfa已经死了? 按费用流的套路来 首先呢 把点 \(i\) 拆成两个点 \(i\) 和 \(i'\) 令 \(i'\) = \(i+n\) 对任意的 \(i\) 点 建 \(s -> i' -> t\) 表示这个连到控制中心… \(s -> i【洛谷P5331】【SNOI2019】—通信(最小费用最大流+主席树优化建边)
传送门 洛谷垃圾数据 写暴力,不开longlonglonglonglonglong都能过 由于n≤1000n\le1000n≤1000 所以能很简单的想到n2n^2n2建边的费用流 洛谷数据只需要在建边的时候判一下val≤wval\le wval≤w就可以过 考虑把绝对值拆开 对2种情况分别以权值为下标建主席树建边即可 #incl