news 2026/5/2 17:29:02

贪心 区间选点AC905

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
贪心 区间选点AC905
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; struct Range{ int l, r; }h[N]; // 自定义比较函数 bool cmp(Range a, Range b){ return a.r < b.r; // 按右端点从小到大 } int main(){ int n; cin>>n; for(int i=0;i<n;i++){ int l, r; cin>>l>>r; h[i] = {l, r}; } // 使用自定义比较函数排序 sort(h, h+n, cmp); int res=0, end=-2e9; // end表示最后选择的点 for(int i=0;i<n;i++){ // 如果当前区间不包含最后选择的点 if(end < h[i].l){ res++; // 需要新点 end = h[i].r; // 选择当前区间的右端点 } // 否则(end >= h[i].l)说明区间已包含点,跳过 } cout<<res<<endl; return 0; }

这个sort也可以用重载运算符写

struct Range{ int l, r; // 重载小于运算符,按右端点排序 bool operator< (const Range &W) const { return r < W.r; } }h[N]; // 使用lambda表达式排序 sort(h, h+n, [](Range a, Range b){ return a.r < b.r; // 按右端点从小到大 }); // 定义比较仿函数 struct Cmp{ bool operator()(Range a, Range b){ return a.r < b.r; } }; // 使用仿函数排序 sort(h, h+n, Cmp());

关于原题中描述是位于区间端点上的点也算作区间内。

实际上用end < h[i].l也能AC

  1. 如果end == l:点end在区间[l, r]左端点

    • 根据题目,端点算区间内 ✅

    • 当前区间已包含end

    • 应该跳过当前区间

排序:[(1,3), (3,5)] i=0: end=-∞ < 1 → true 选择点3, end=3, res=1 i=1: end=3 < 3 → false 跳过区间(3,5) 结果:res=1 ✓

还有vector的写法

#include <iostream> #include <algorithm> #include <vector> using namespace std; const int N = 100010; //保存区间 vector<vector<int>> a(N,vector<int>(2,0)); int n; int main() { cin >> n; //读入区间 for(int i = 0; i< n; i++) { int l, r; cin >> l >> r; a[i][0] = l; a[i][1] = r; } // 按右端点排序 sort(a.begin(), a.begin() + n, [](vector<int> &a, vector<int> &b){return a[1] < b[1];}); // res 保存答案,end 是当前选的点 int res = 0, end = -1e9 - 10; // 遍历区间 for(int i = 0; i < n; i++) { // 如果当前选的点覆盖了该区间,则跳过 if(end >= a[i][0] && end <= a[i][1]) continue; else { // 选的点+1, 选的点更新为区间右端点 res++; end = a[i][1]; } } cout << res; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 11:44:16

[NISACTF 2022]ezstack

第一次打CTF——PWN篇学习笔记1132位的ret2text&#xff0c;偏移值为0x484&#xff0c;在ida中查找system和/bin/sh的地址&#xff0c;编写脚本得到flagssize_t shell() {_BYTE buf[72]; // [esp0h] [ebp-48h] BYREF ​system("echo Welcome to NISACTF");return rea…

作者头像 李华
网站建设 2026/4/20 22:19:30

Halcon条码技术详解(含 Halcon 应用示例)

条码技术详解&#xff08;含 Halcon 应用示例&#xff09; 一、一维码&#xff08;线性条码&#xff09; 1. 定义 一维码是由规则排列的条&#xff08;低反射率部分&#xff09;和空&#xff08;高反射率部分&#xff09;组成的标记&#xff0c;通过条空组合表达信息&#x…

作者头像 李华
网站建设 2026/4/25 2:49:37

基于SpringBoot的计算思维与人工智能学习网站设计与实现_3270a91w

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/4/17 8:08:02

Labview实现四工位相机同时扫二维码、HTTP协议Mes上传及汇川PLC通讯协议

Labview四工位相机同时扫二维码HTTP协议Mes上传汇川PLC通讯协议最近在项目里搞了个超有意思的事儿&#xff0c;用Labview实现了四工位相机同时扫二维码&#xff0c;还结合了HTTP协议进行Mes上传以及汇川PLC通讯协议。这一套下来&#xff0c;整个生产流程都变得高效又智能啦&…

作者头像 李华
网站建设 2026/5/1 17:51:46

Miniconda环境导出与导入:实现团队协作无缝对接

Miniconda环境导出与导入&#xff1a;实现团队协作无缝对接 在人工智能项目开发中&#xff0c;最令人头疼的问题之一莫过于“在我机器上明明能跑”的尴尬局面。你辛辛苦苦调通的模型&#xff0c;在同事那里却因为某个包版本不兼容直接报错&#xff1b;新成员入职第一天&#xf…

作者头像 李华
网站建设 2026/4/29 19:28:42

计算机组成原理(20) 第五章 - 总线

一、 总线定义​​​​​二、总线特性三、总线分类3.1 串行总线和并行总线串行总线与并行总线是计算机系统中两种核心的数据传输总线架构&#xff0c;核心差异在于数据位的传输方式&#xff1a;串行总线逐位传输数据&#xff0c;并行总线多位同时传输数据。两者在传输速度、硬件…

作者头像 李华