P2255 [USACO14JAN]记录奥林比克
题目描述
农民约翰热衷于所有寒冷天气的运动(尤其是涉及到牛的运动), 农民约翰想录下尽可能多的电视节目。 为moolympics电视时间表由N个不同的节目 (1 < = n=150),每个具有指定的开始时间和结束时间。FJ 有一个双调谐器录音机,可以同时录制两个节目。 请帮助他确定他能录制的节目的最大数量。
输入输出格式
输入格式:
第1行:整数n。 第2行.. 1 + n:每行包含单个的开始和结束时间 程序(范围为0…1000000000的整数)。
输出格式:
仅一行,节目FJ可以记录的最大数量。
输入输出样例
6
0 3
6 7
3 10
1 5
2 8
1 9
4
一道很有意思的贪心题。
我们先把数据按a[i]排序,然后开两个变量m1、m2存b[i]的最小值和次小值,有以下三种情况:
- 读入一个a[i]>=m1,则 ans++;m1=min(m2,b[i]);m2=max(m2,b[i]);
- 读入一个a[i]<m1且b[i]<m1,则 m2=m1;m1=b[i];
- 读入一个a[i]<m1且m1<b[i]<m2,则 m2=b[i];
代码如下:
#include<iostream>
#include<string>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<stack>
#include<queue>
#include<algorithm>
#define maxn 1005
using namespace std; inline int read()
{
char c=getchar();
int x=,res=;
while(c<''||c>'')
{
if(c=='-')
x=-;
c=getchar();
}
while(c>=''&&c<='')
{
res=res*+(c-'');
c=getchar();
}
return x*res;
} struct node
{
int a,b;
}g[maxn];
int n,aa,bb,ans;
int m1,m2; bool cmp(node a,node b)
{
return a.a<b.a;
} int main()
{
n=read();
for(int i=;i<=n;i++)
{
aa=read();bb=read();
g[i].a=aa;g[i].b=bb;
}
sort(g+,g++n,cmp);
m1=min(g[].b,g[].b);
m2=max(g[].b,g[].b);
for(int i=;i<=n;i++)
{
if(g[i].a>=m1)
{
ans++;
m1=min(m2,g[i].b);
m2=max(m2,g[i].b);
}
else
{
if(g[i].b<m1)
{
m2=m1;
m1=g[i].b;
}
else if(g[i].b<m2)
{
m2=g[i].b;
}
}
}
cout<<ans+;
return ;
}
为什么说这题很有意思呢?那是因为这题就是在只有一个录音机的基础上又加上了一个,另外我这里还有一个大胆的想法,如果把录音机的数目改成3个、4个甚至说m个,又该怎么做呢?有人可能会说不就是多开几个变量吗?但是如果分析一下,就会发现随着录音机数目的增多,所有可能出现的情况也会随之增多,如果把这些情况一一列举出来显然不现实,然而我自己也不会做呀,那就先把问题放在这里好了,说不定以后还可以出一道毒瘤题。
P2255 [USACO14JAN]记录奥林比克的更多相关文章
- P2255 [USACO14JAN]记录奥林比克Recording the M…
P2255 [USACO14JAN]记录奥林比克Recording the M… 题目描述 Being a fan of all cold-weather sports (especially tho ...
- ITWorld:2014年全球最杰出的14位编程天才
近日,ITWorld 整理全球最杰出的 14 位程序员,一起来看下让我们膜拜的这些大神都有哪些?(排名不分先后) 1.Jon Skeet 个人名望:程序技术问答网站 Stack Overflow 总排 ...
- TP5学习记录(Model篇)
ThinkPHP 数据库操作 数据库连接 #在config/database.php设置数据库连接参数或者利用Db::connect()方法设置数据库连接 /* * public static fun ...
- 记一次debug记录:Uncaught SyntaxError: Unexpected token ILLEGAL
在使用FIS3搭建项目的时候,遇到了一些问题,这里记录下. 这里是发布搭建代码: // 代码发布时 fis.media('qa') .match('*.{js,css,png}', { useHash ...
- nginx配置反向代理或跳转出现400问题处理记录
午休完上班后,同事说测试站点访问接口出现400 Bad Request Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...
- Kali对wifi的破解记录
好记性不如烂笔头,记录一下. 我是在淘宝买的拓实N87,Kali可以识别,还行. 操作系统:Kali 开始吧. 查看一下网卡的接口.命令如下 airmon-ng 可以看出接口名称是wlan0mon. ...
- 2015 西雅图微软总部MVP峰会记录
2015 西雅图微软总部MVP峰会记录 今年决定参加微软MVP全球峰会,在出发之前本人就已经写这篇博客,希望将本次会议原汁原味奉献给大家 因为这次是本人第一次写会议记录,写得不好的地方希望各位园友见谅 ...
- 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...
- 我是如何在SQLServer中处理每天四亿三千万记录的
首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...
随机推荐
- [2019BUAA人工智能实战_陈泽寅]第1次个人作业
我们的征程是星辰和大海 一.索引 项目 内容 这个作业属于哪个课程 BUAA人工智能实战 这个作业的要求在哪里 here 我在这个课程的目标是 理论实践相结合,提升自己coding能力 这个作业在哪个 ...
- Sptringboot 添加子项目
1:复制一个子项目,修改项目名 2:修改启动类 3:修改pom.xml 4:打开project structure 选择Modules 下一步下一步 5:添加主项目的pom.xml 在<mo ...
- Jetson TX1 SD card启动
上网DNS /var/run/NetworkManager/resolv.conf nameserver 211.100.225.34 nameserver 219.239.26.42
- Ubuntu 16.04 RabbitMq 安装与运行(安装篇)
Ubuntu 16.04 RabbitMq 安装与运行(安装篇) 2018年08月15日 15:05:24 我跟吴彦祖四六开 阅读数:1966 前言 目前公司用阿里云 + redis 的方式实现的 ...
- HDU1166-ZKW树
单点修改,区间求和 // // Created by helica on 2018/3/18. // //zkw #include <cstdio> #include <cstrin ...
- v-for 在 VSCode 中出现 Elements in iteration expect to have 'v-bind:key' directives.
在 VSCode 中编辑代码时,在有 v-for 的语句下面有一条红色波浪线,鼠标放上去有提示 Elements in iteration expect to have 'v-bind:key' di ...
- 题解:LOJ540游戏
题目描述 小L计划进行n场游戏,每场游戏使用一张地图,小 L 会同时使用三辆车在该地图上完成游戏. 小 L 的赛车有三辆,分别用大写字母 A.B.C 表示.地图是一张无向简单图(没有重边或自环),每次 ...
- 解决liblapack.so.3: cannot open shared object file: No such file or directory报错
关于这种类型的报错通常的解决方式有两个: 方法一.查找系统哪儿有liblapack.so.3这个文件 find /lib -name liblapack.so.3 如果lib找不到这个文件,请换其他路 ...
- c编译动态库可以编译但是无法导入解决方法
$(CC) $(CFLAGS) -Wl,--whole-archive ${libusb} -Wl,--no-whole-archive $(lib_objs) $(LFLAGS) -o $(lib) ...
- 面向对象学习(python)
面向对象总结 一.面向对象与面向过程的区别 面向过程:根据业务逻辑从上到下写垒代码 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 1.面向过程编程: 概念:发过程中最常见的操作就是粘贴 ...