当前位置: 首页 > news >正文

CF930C Teodor is not a liar! 题解

题外话:说谎的人的英文竟然是 liar 一直以为是 lier
wssb

依旧首先看题luogu codeforces

看完题之后发现有点抽象啊,于是我们开始手搓样例

但是我们发现这个好像是线段覆盖状物

然后我们注意到这个一定是和每个点又几个线段覆盖有关的,因为如果我连这个都不知道那么这个题也别想做了.

于是我们考虑使用差分预处理每个点被几个线段给覆盖了

然后 \(\Theta(n)\) 地计算出每个点被覆盖的次数

我们不难发现,形如这样的

$ 1,2,2,1,1,2,2,1$

序列我们最多只能选 \(1,2,2,2,2,1\) 或者 \(1,1,2,2,1\) 这样的子序列而无法出现选出这样的子序列 \(1,2,2,1,2,2,1\)

这是因为当我们选择上面前两种子序列时,我们无法判断这个序列有没有从中间断开,

也就是说我们无法判断是否存在一个点满足题意

而对于后者,由于中间出现了一个点比旁边的点的数值更小,我们一定可以断定这个点没有被所有的线段覆盖

因为它左边的线段无法覆盖到它而且右边的也无法覆盖它

这是我们重新审视一下这两个目标子序列,发现它们都是先不下降,再不上升,即单峰

那么我们应该如何去完成这道题呢?

显然,我们可以定义两个 \(dp1\)\(dp2\) 来帮助我们求答案

\(dp1_i\) 就表示前 \(i\) 个数(注意: 包括 \(i\) 自己)的最长不下降子序列长度

\(dp2_i\) 就表示后 \(n-i+1\) 个数(注意: 包括 \(i\) 自己)的最长不上升子序列长度

最后的答案显然就是 \(\max\limits_{1\le i \le n} dp1_i+dp2_i-1\) 注意到这里要 \(-1\) 是因为我们刚才定义时两边均包含了 \(i\) 这个数需要被减掉.

现在的目标就是求 \(dp1\)\(dp2\) 这两个数组了.考虑贪心的去求时间复杂度 \(\Theta(n\text{ }log_2n)\) 于是这道题就被我们解决了

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,m,a[N],d[N],dp1[N],dp2[N],ans;
vector<int> g;int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){int l,r;scanf("%d%d",&l,&r);d[l]++;d[r+1]--;}for(int i=1;i<=m;i++){a[i]=a[i-1]+d[i];}for(int i=1;i<=m;i++){vector<int>::iterator pos=upper_bound(g.begin(),g.end(),a[i]);if(pos==g.end()){g.push_back(a[i]);}else{*pos=a[i];}dp1[i]=g.size();}reverse(a+1,a+m+1);g.clear();for(int i=1;i<=m;i++){vector<int>::iterator pos=upper_bound(g.begin(),g.end(),a[i]);if(pos==g.end()){g.push_back(a[i]);}else{*pos=a[i];}dp2[i]=g.size();}reverse(dp2+1,dp2+m+1);for(int i=1;i<=m;i++)ans=max(ans,dp1[i]+dp2[i]-1);printf("%d\n",ans);return 0;
}
http://www.jsqmd.com/news/817379/

相关文章:

  • 10分钟精通BilldDesk:从零开始的远程桌面革命
  • 企业如何利用 Taotoken 实现多团队 API Key 管理与访问审计
  • 2026年内蒙古包头切割拆除服务商参考指南:内蒙古沃德鑫建筑工程公司,包头切割、包头水锯切割、包头绳锯切割拆除等,以专业技术护航建筑施工安全 - 海棠依旧大
  • NE555定时器芯片:从内部原理到经典电路设计的全面解析
  • 3分钟快速解密:免费开源工具帮你找回遗忘的压缩包密码 [特殊字符]
  • 2026年小红书视频怎么去水印?小红书保存视频去水印方法全整理 - 爱上科技热点
  • 开题报告一次稳过:避开导师所有雷点,虎贲等考 AI 帮你把论文起点做扎实
  • 抖音视频怎么去水印?2026年抖音免费去水印方法全攻略 - 爱上科技热点
  • 抖音怎么保存图片没有水印?抖音无水印图片提取教程(2026实测方法汇总) - 爱上科技热点
  • 开源AI模型编排平台Cortex:生产级部署与性能调优实战
  • 性价比高的粤港车 - GrowthUME
  • 洛谷-P7998 [WFOI - 01] 猜数 题解
  • 2025最权威的AI科研神器推荐
  • 三线制PT100测温,采集到的V5和V6电压怎么算温度?一个公式搞定
  • 径向基函数RBF在三维角色面部表情编辑中的应用实践
  • 如何在macOS上轻松运行Windows程序?Whisky完整指南
  • 2026年厦门GEO优化权威排名:核心数据深度解析与避坑指南 - 元点智创
  • 2026保险理赔纠纷处理指南:附全国顶尖律师事务所实力榜单 - 测评者007
  • 中山起名市场乱象梳理:选合规起名服务要避开这几个误区 - GrowthUME
  • 在 Node.js 后端服务中集成 Taotoken 实现多模型备选与自动降级
  • 视频无水印提取怎么操作?2026最新抖音快手短视频去水印方法教程 - 爱上科技热点
  • 3大核心突破,让暗黑破坏神2在现代PC上重获新生
  • 2026北京AI搜索优化三大服务商全面解析 - 余小铁
  • 应对高并发场景Taotoken的稳定性与路由策略实践
  • 小红书视频怎么保存不带水印?2026最全去水印方法与工具实测对比 - 爱上科技热点
  • 免费在线去水印软件推荐排行榜:2026实测哪款去除水印最好用? - 爱上科技热点
  • 开环电源的“伪稳定”与扰动失稳——从仿真看闭环控制的必要性
  • 2026年实验室离心机优质公司参考:四川诚邦浩然测控、专注实验室离心机研发生产覆盖冷冻、高速、常温、大容量全品类 - 海棠依旧大
  • 纸尿裤品牌哪家吸水性强:露安适安敏微气候系列强吸干爽 - 17329971652
  • Zemax红外镜头设计避坑指南:为什么我的非球面加了反而更糟?