讲师:PinkRabbit 时间:20210701 地点:福建师范大学附属中学
有
$n$ 座城市,第$i$ 座城市生产了$p_i$ 单位货物,最多能卖出去$s_i$ 单位货物。对于
$1≤i<j≤n$ ,城市$i$ 有一条单向运输线路通向$j$ 。所有运输线路的容量都为
$c$ 单位货物。不能反向运输,但是货物可以经过任意多个运输线路。请求出总共最多能卖出去多少单位货物。
数据范围:n≤10^4。时间限制:2 s。Bonus:n≤10^6。
首先考虑网络流建模,模型显然;但是边数是
这时一个惊世骇俗的步骤登场了——由最大流等于最小割,然后用动态规划来优化!
根据最小割的第二种定义:
将原图划分为两个点集,使得他们之间的连边边权和最小。
所以,一个点要么割掉它向
根据第二定义也可以很快地得出转移方程:$f_{i,j}$ 表示 DP
就诞生了!
能不能再优化?设
给定两个长度为
$n$ 的正整数序列$a_{1∼n}$ 和$b_{1∼n}$ ,以及一个正整数$k$ 。请选出恰好
$k$ 对数$(p_i,q_i)$ 满足$p_i≤q_i$ 且$p_{i-1}<p_i$ 且$q_{i-1}<q_i$ 。最小化
$\sum_{i=1}^k a_{p_i} +\sum_{i=1}^k b_{q_i}$ 。数据范围:$n,k≤5×10^5$。时间限制:10 s。
这题莫不是一个模拟费用流板子?但是 wqs
二分即可解决。
模拟费用流具体流程如下:从左到右扫描,依次加入
如何去掉一个
有一张
$n$ 个点$m$ 条无向边的图,每条边的长度为$1$ ,但是第$i$ 条边限制只能在时间段$[l_i,r_i]$ 内通过(即从一端点出发时必须在时刻$[l_i,r_i-1]$ 内),而且是禁止在一个点处停留的,也就是到达了一个点就必须选择一条出边继续走,经过一条边必须恰好花费 1 的时间,并且必须到达另一个端点。求从
$1$ 到$n$ 的最短路。数据范围:$n,m≤5×10^5$。时间限制:$6$ s。
考虑一条边可以反复走,且反复走时奇偶位是分开的,所以考虑按照奇偶将所有点拆点,每条边也拆成
先讲做法:对于每个点记录
为什么是对的呢?因为
存在一张
$n$ 个点的有向图,记$f(i,j)$ 表示点$i$ 能否直接或间接到达点$j$ 。你不知道这张图的边集,只给定了一个矩阵
$A_{n×n}$ 。其中
$A_{i,j}$ ($i≠j$)只能为字符$A, O, X$ 之一,而$A_{i,i}$ 均为字符-
。对于两点
$u,v$ ($u≠v$):1.如果
$A_{u,v}$ 为A
,则表示$f(u,v) \and f(v,u)=1$ 。2.如果
$A_{u,v}$ 为O
,则表示$f(u,v) \or f(v,u)=1$ 。3.如果
$A_{u,v}$ 为X
,则表示$f(u,v) \oplus f(v,u)=1$ 。请求出满足条件的有向图的最小可能边数,或判定这样的图不存在。
数据范围:$n≤47$。时间限制:$5$ s。
考虑先将以 A
连接的 进行缩点,如果同一个强连通分量内存在 X
就矛盾无解。
注意到,若一个强连通分量大小大于等于二,那么它会多产生一的代价;如果大小等于一,那么没有额外代价;那么我们只要尝试将可以合并的尽可能合并。
因为大小为一的没啥关系,因此直接去掉;剩下的连通块数量
因此我们考虑指数级做法,设 X
)。
我们的任务是找到最小的
这时我们发现,即使改成或卷积,答案不变!复杂度
这时我们发现,复杂度的瓶颈不在于点积,而在于每次的 iFWT
!由于我们只需要求一个点的值,因此我们直接
计算单点点值可以参考 FWT
的右乘矩阵
这时我来吊打标算了,直接随机化,随机一个排列,依次加入,每次争取加入最前面得强连通分量,直接
有
$n$ 个游戏,每个游戏有收益$a_i$ ,成功率$p_i$ 。每秒可以玩一个游戏,如果成功了则获得收益,并且获得一次可以升级游戏的机会。
每个游戏有升级后的收益
$b_i$ ($a_i<b_i$)。问玩
$t$ 秒游戏可以获得的期望收益的最大值。输出浮点数即可。数据范围:$n≤10^5$,$t≤10^10$,$1≤a_i<b_i≤10^{18}$,$0<p_i<1$。时间限制:3 s。
显然,第一次获得升级机会时,我一定要升级一个
设
对于凸壳上的每一段,均二分并矩阵快速幂加速找到分界点;当然利用倍增可以优化到一个
$$
有一个
$2$ 行$n$ 列的棋盘,每个格子里有整数$a_{i,j}$ 。一只乌龟从
$(1,1)$ 走到$(2,n)$ ,只能往下走和往右走。定义路径权值为路径上经过的数值之和,乌龟想要最大化这个权值。你可以对棋盘上的数字重新排列,最小化乌龟可能获得的最大权值。
请构造达到这个最小值的方案。
数据范围:$n≤25$,$0≤a_{i,j}≤5×10^4$。时间限制:5 s。
性质 1:第一行递增、第二行递减,证明使用交换法,显然不劣。
性质 2:乌龟要么走第一行,要么走第二行,证明考虑权值和的差分数组,即可证明是下凸的。
于是就可以愉快地背包拉!
给定一个长度为
$n$ 的数组$a_1∼a_n$ ,保证$a_i$ 互不相同。对于数组中每一对顺序对($i<j$ 且
$a_i<a_j$ ),在$i,j$ 之间连一条无向边。求图中连通块个数。
你需要支持
$q$ 次修改$a_i←x$ ,保证每次修改后$a_i$ 互不相同。数据范围:$n,q≤5×10^5$,$1≤a_i,x≤10^6$。时间限制:8 s。
给定
$n$ 个正整数$a_1,a_2,…,a_n$ ,求$max_{1≤i,j≤n} \operatorname{lcm}(a_i,a_j)$ 。数据范围:$n,a_i≤10^5$。时间限制:1 s。
考虑枚举
考虑从大到小加入一个栈中,如果存在栈中元素与当前元素互质,我们可以把这个元素及其之后所有元素弹出,因为显然没用了。
问题就转化为维护栈中是否有元素与当前元素互质,有:
$$
\sum_{i=1}^n[gcd(a_i,m)=1]=\sum_{k|m}\mu(k)\sum_{i=1}^n[k|a_i]
$$
考虑如何维护
总复杂度是两个