P2255 [USACO14JAN]Recording the Moolympics S

https://www.luogu.com.cn/problem/P2255
涉及知识点:区间贪心,排序
黄色题
思路:

这题是一道区间贪心。

一般的区间贪心题是给你 N 个区间,你的任务是尽量让更多的区间两两不重合。

对于一般的区间问题,我们要把每个区间的右端点从小到大排序,再按排好序的顺序来处理,因为这样可以使每个任务结束时间更早,以便安排下一个区间。

一般的区间贪心题有自私的放牧线段覆盖。(其实是一模一样的题目,你交同一份代码都能AC,暗示着双倍经验

接下来看这道题,这道题与一般的区间贪心的唯一区别是约翰的录音机非常神奇,可以同时记录两个节目。(两个节目的声音互相干扰真不知道约翰怎么录的)于是我们可以看做约翰有两个录音机,每一个都可以单独记录节目。我们每次处理节目,要尽量让每个录音机的空闲时间少,再按普通区间贪心的做法来解决。


结束时间越晚,与下一个节目的开始时间相距越短,空闲时间也就越少

代码:

#include<bits/stdc++.h> using namespace std; int n,ans; struct node{ int s,e; }a[155]; bool cmp(node a,node b) { return a.e<b.e; } int main() { cin>>n; for(int i=1; i<=n; i++) { cin>>a[i].s>>a[i].e; } sort(a+1,a+n+1,cmp); int p1=0,p2=0; for(int i=1; i<=n; i++) { if(a[i].s>=p1&&p1>p2||(a[i].s>=p1&&a[i].s<p2)) { ans++; p1=a[i].e; } else if(a[i].s>=p2) { ans++; p2=a[i].e; } } cout<<ans; return 0; }

 

 


__EOF__

本文作者灰の魔女伊蕾娜
本文链接https://www.cnblogs.com/2elaina/p/16481162.html
关于博主:编程小萌新一名,希望从今天开始慢慢提高,一步步走向技术的高峰!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   -イレイナ  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示