正睿 Day3Day4 T1&T2 总结

上午:正睿场NOIP20连T1T2合并 😉#

T1:上升序列#

给定 n×m 矩阵,其中每行行内单调不降,在每一行选一个数,求组成单调不降序列方案数

n100,m104

简单DP,因为每行已经排好序,故双指针转移即​​可✌️ ​

T2:划分#

给定序列 A,B,C ,求一个划分方案 d 使得 mini{i=di1+1diai+bdi1+1+ci} 最大

n2×105

sol1:

因为题目中出现 最小值最大 的字眼,考虑二分答案
O(n) 扫一遍,因为我们只关心 是否存在 段最小值不小于 mid 的划分,故每次若 si+ciminmid0,则该右端点合法,更新 sibi+1 的最小值,即更新后面的可选左端点。

sol2:

非常高贵的线段树优化DP​
直接设 dpi 表示划分前 i 个的答案,首先有:

dpi=maxj<i{min(dpj,W(j,i))}

考虑分讨拆开其中的 min

dpj<W(j,i)=sisj+bj+1+ci

si+ci>sj+dpjbj+1

那么我们将 sj+dpjbj+1 丢到权值线段树里去,已 si+ci 为分界点,一半查询 dpj 的最大值,另一半查询 bj+1sj 的最大值

T3: 风・珍珠#

n 个物品,代价为 xi×vi,价值为 vi,进行 m 次操作,每次可以删去一个物品,或询问代价和至多为 k 的最大价值

n,kmax2×106,m5×103xi 严格递增

首先看到这个 “背包” 的不同寻常之处:代价为 xi×vi,很谜的一个乘积😵

那么我们先考虑不带修改的:

不难发现”性价比“即为:valcost=vixivi=1x

那么我们将 x 降序排序后,设 dpi总价值为i的最小代价,便注意到此时物品 i 至多只能提供 kx 的价值,故我们的状态数是调和级数的,故复杂度 O(nlogk)40pts

于是对于一般情况,删点变加点。因为加点顺序不变,没有了前文中 xi 的单调性,怎么办呢 > ʌ <

那么拿出高贵的根号分治!阈值设为 B,将物品分为 xi<Bxi>B 两类

  1. 对于 xiB ,因为 xi 严格递增,故这一类之多只有 B 个物品,正常暴力 DP 复杂度 O(Bk)
  2. 对于 xi>B ,先排序预处理出初始背包,每次加入暴力维护背包, O(nlogk+mkB) 。每次查询时需要合并两种 “代价“ 定义不同的背包,可以枚举在 xi>B 中希望得到的价值,O(mkB) 合并。

根号平衡,取 B=O(m) 时最优,O(nlogk+km)

T4:花・焦骨#

需要在 n×n 的矩阵内的 m 个位置填上非负整数,并满足第 i 行最大值恰为 ai,第 i 列最大值恰为 bi ,求最小的数字和

n2500,m8×105,1max(ai,bi)106

[0,k] 的每个限制值在行/列的限值中至多出现 100

首先容易发现,每次只用填最大值!

但对于一个位置 (x,y) ,若 axby 则在此放置其较小值后,另外一个限制仍需另外选一个点来满足

发现这样代价为两个点,显然不优。较优的是在两个限制相同的行列交点处放置。

咦?一个交点可以覆盖两个限制条件,这不就是匹配吗?

那么我们尝试做二分图最大匹配,左部点为行,右部点为列,两限制值相同时两部分连边,那么其最大匹配的权值就是我们省下来的权!

建图后跑 dinic ,O(nc2),本题 c100,可以通过此题。

posted @   慕斯ひいきする  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示