news 2026/6/15 21:28:14

贪心 区间选点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/6/14 20:49:35

Python编程入门:从零开始理解变量、类型与基础运算

在数字世界的构建中&#xff0c;Python以其简洁优雅的语法成为无数开发者与初学者的首选。今天&#xff0c;就让我们一同揭开Python基础语法的神秘面纱&#xff0c;探索如何用代码与计算机对话。一、初识Python&#xff1a;从计算器到编程语言Python可以看作一个功能强大的计算…

作者头像 李华
网站建设 2026/6/15 14:57:39

畅捷通T+只有MDF文件如何恢复成正常账套

问题现象】 账套物理文件只有 mdf文件&#xff0c;没有ldf文件如何恢复数据&#xff1f; 【解决思路】 1、将mdf文件恢复到数据库中&#xff1b; 【解决方案】中第1-第4步骤 2、检查账套物理文件对应的软件版本及补丁号&#xff0c;保证安装的软件版本及补丁号与账套数据版…

作者头像 李华
网站建设 2026/6/15 14:19:53

Matplotlib基础教程:折线图、柱状图、直方图绘制全解析

Matplotlib是Python生态中最核心的数据可视化库之一&#xff0c;凭借灵活的定制能力和简洁的语法&#xff0c;成为数据分析、科研绘图、报表制作的必备工具。本文将从实战角度出发&#xff0c;手把手教你掌握折线图、柱状图、直方图三种高频图表的绘制方法&#xff0c;覆盖基础…

作者头像 李华
网站建设 2026/6/15 15:00:11

DAY25 常见的降维算法

前言&#xff1a; 在前几天我们主要讨论了关于特征筛选和降维方面的问题&#xff0c;所以在开始今天对常见降维算法进行分析前&#xff0c;我们需要先明确一下特征筛选和降维的区别&#xff0c;特征筛选是关于“取舍”&#xff0c;它在保留特征原始意义的前提下做减法&#xff…

作者头像 李华
网站建设 2026/6/15 13:56:02

8 个MBA课堂汇报工具,AI写作降重推荐

8 个MBA课堂汇报工具&#xff0c;AI写作降重推荐 当论文压力袭来&#xff0c;你是否也在挣扎&#xff1f; MBA学习过程中&#xff0c;课堂汇报、论文写作、文献综述等任务接踵而至&#xff0c;让许多学生感到力不从心。尤其是在面对高重复率要求时&#xff0c;如何在有限的时间…

作者头像 李华