ABC231

ABC231

A

签到

B

签到

C

签到

D

\(n\)个数字,问有没有可能构造一个序列,满足\(m\)\(a_i\)\(b_i\)相邻

解:

判断有没有环,有没有数字相邻了超过两个数字

E

\(n\)种面值的纸币,其中\(a_{i+1}\%a_i=0\),求凑出\(x\)元(可以用给定的面额找零)最少需要多少张纸币

解:

对于每种面值的货币,考虑用它实现的是向上取整还是向下取整,从大到小递推

F

\(n\)个人,唔系迪西对第\(i\)个人的好感度是\(a_i\),玛卡巴卡对第\(i\)个人的好感度是\(b_i\),现在每个人可以不送或送其中一个人礼物,但是如果第\(k\)个人送给唔系迪西礼物而\(b_k>a_k\)或送给玛卡巴卡礼物或\(a_k>b_k\)则会不高兴,求高兴的送礼方案数。

解:

对每个人按\(a_i\)排序,然后对于\(i<j\)\(b_i\geq b_j\)的一对\((i,j)\)有一点贡献,但是注意\(a_i=a_j,b_i=b_j\)的情况单独计算

G

H

有一个\(n*m\)的网格,有\(k\)个白色格子,可以支付\(c_i\)的费用将第\(i\)块改成黑的,求每行和每列至少有一个黑色各自的最小花费。

解:

最小费用最大流,非常妙的一个技巧

将行和列看作一个二分图的左右两部,一个棋子\(c(i,j)\)表示左边的\(i\)向右边的\(j\)连一条流量为\(1\),代价为\(c(i,j)\)的边

为了让每个节点都被流入至少一个流量

让左侧点和源点相连,流量为\(1\),代价为\(-inf\)

让右侧点和汇点相连,流量为\(1\),代价为\(-inf\)

这样保证了每个点至少流经一次

为了补充流量,左侧点和右侧点向源点和汇点连一些流量为\(inf\),代价为\(0\)的边

为了导走多余的流量,每个左侧点再向汇点连一条流量为\(inf\),代价为\(0\)的边

原文地址:https://www.cnblogs.com/knife-rose/p/15685927.html