某 CSPS 模拟赛 T2 背包问题(bag)【LIS】

题意

T T T 组数据。每组数据给定 n n n 个二维点与 m m m 个数 t i t_i ti。要求从找到最长的二维偏序不下降序列,能给序列中的每个点分配一个 t i t_i ti 不小于其横坐标。 n , m ≤ 1 0 5 n,m\leq 10^5 n,m105

0% 题解(误)

把标程的二分写挂就是 0 分了。

题解

首先有个很显然的性质——选出的 t i t_i ti 都是最大的几个 t i t_i ti 的话,答案一定不会劣。
所以对于每个点,我们可以知道以它结尾的不下降序列不可能超过其横坐标在 t t t 中的排名,否则我们无法找到足够多的 t i t_i ti 使它们都大于之前那些点的横坐标。
知道这个性质就可以乱搞了。
仿效传统的 LIS 做法,只需要在利用这个点更新时判断以它结尾的长度是不是超出了这个限制,假如超出就强行把它与那个限制取 min ⁡ \min min

代码咕了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值