P2207 Photo

题目描述

Framer Jhon 打算给他的N头奶牛照相,( 2 <= N <= 1 000 000 000) 。

他们排成一条线,并且依次取1~N作为编号。

每一张照片可以拍摄到这列奶牛中一个连续的区间中的奶牛。

对于每一头奶牛,FJ都想要让Ta至少出现在一张照片里。

不幸的是,有K对关系不好的奶牛( 1 <= K <= 1000),他们拒绝出现在同一张照片里。

已知所有关系不好的奶牛所在的位置,请计算出FJ需要的最小需要拍摄的照片数量。

输入输出格式

输入格式:

*第一行: 两个整数: N,K.

*第2..K+1行中,第i+1行有两个整数,记为A_i与B_i。它们代表着处在队列中第A_i头奶牛与第B_i头奶牛是关系不好的,它们不能出现在同一张照片里。

输出格式:

*一个整数,代表FJ需要的最小需要拍摄的照片数量


最近在加油复习呢。加油加油!

由题意可知: 两关系不好的奶牛中需要一个断点, 由此转化为去最少的断点, 使没一对关系不好的奶牛之间存在至少1断点, 经典的贪心区间取点问题

此类区间取点问题的解法为区间排序。 试想: 在已经确定一个区间需要放置断点时, 放在哪里最优呢? 一定放在区间末尾, 因为这样才能包含尽可能多的区间。 所以我们对区间按照左端点进行排序, 维护一个最后断点位置, 当此区间的左端点 > 断点时, 我们新放置一个断点在此区间的右端点处, 符合贪心思想。

有一点需要注意的是区间包含问题, 出现区间包含时, 我们需要将最后断点的位置调整到小区间的右端点, 以满足小区间中有断点。

还有一点要注意的是区间的开闭问题。像这题就是左闭右开类型的(奶牛不可能被切成两半, 所以断点的定义确切的来说是上一张照片的结尾, 所以区间使左闭右开)。 建议统一使用闭区间写法(以确保正确 然而代码力超强的大佬们根本不用管 ), 用左右端点 \(+1,-1\) 来符合开闭即可。

Code

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#include<climits>
typedef long long LL;
using namespace std;
int RD(){
int out = 0,flag = 1;char c = getchar();
while(c < '0' || c >'9'){if(c == '-')flag = -1;c = getchar();}
while(c >= '0' && c <= '9'){out = out * 10 + c - '0';c = getchar();}
return flag * out;
}
const int maxn = 1019;
int num, nr;
struct Node{
int l, r;
}I[maxn];
bool cmp(Node a, Node b){
if(a.l != b.l)return a.l < b.l;
return a.r < b.r;
}
int main(){
num = RD(), nr = RD();
for(int i = 1;i <= nr;i++){
I[i].l = RD(), I[i].r = RD();
if(I[i].l > I[i].r)swap(I[i].l, I[i].r);
I[i].r--;//左闭右开处理一下
}
sort(I + 1, I + 1 + nr, cmp);
int ans = 1, last = -1;
for(int i = 1;i <= nr;i++){
if(I[i].l > last){
ans++;
last = I[i].r;
}
else if(I[i].r < last)last = I[i].r;//区间包含处理
}
printf("%d\n", ans);
return 0;
}

P2207 Photo的更多相关文章

  1. 洛谷 USACO P2207 Photo

    P2207 Photo 题目描述 Framer Jhon 打算给他的N头奶牛照相,( 2 <= N <= 1 000 000 000) . 他们排成一条线,并且依次取1~N作为编号. 每一 ...

  2. 在 Windows 10 中启用 Windows Photo Viewer

    本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4727323.html 不知大家在使用了Win10之后有没有这样感受 ...

  3. Autodesk的照片建模云服务—Autodesk ReCap 360 photo 的测试数据

    之前已经给大家介绍过了Autodesk的照片建模云服务—Autodesk ReCap 360 photo, 你也可以自己登录到http://recap360.autodesk.com/ 自己试一试. ...

  4. 如何申请Autodesk ReCap 360 photo的云币(Cloud Credit)

    在之前的博客中我介绍过Autodesk的照片建模云服务—Autodesk ReCap 360 photo,通过Autodesk ReCap 360 photo,你可以非常方便的通过照片生成三维模型.如 ...

  5. Autodesk的照片建模云服务—Autodesk ReCap 360 photo

    现实捕捉技术方兴未艾,简单的讲现实捕捉技术就是把现实中的现状信息数字化到计算机中以便做进一步的处理.对于不同的应用目的会有不同的捕捉设备,工程或传媒娱乐行业中经常用到的肯定就是三维模型了.那如何得到三 ...

  6. iOS开发之保存照片到系统相册(Photo Album)

    iOS开发之保存照片到系统相册(Photo Album) 保存照片到系统相册这个功能很多社交类的APP都有的,今天我们简单讲解一下,如何将图片保存到系统相册(Photo Album). 创建UIIma ...

  7. mongo里面根据对象字段的ID查询 db.Photo.find({'owner.$id':ObjectId('xxxx')}) , 并且使用forEach循环修改查询的数据

    var ones = db.Photo.find({'owner.$id':ObjectId("5344f0dab7c58e8e098b4567")}) db.Photo.find ...

  8. iOS - Photo Album 图片/相册管理

    前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIImagePickerController : UINavigationController <NSCod ...

  9. WordPress Pretty Photo插件‘hashrel’参数跨站脚本漏洞

    漏洞名称: WordPress Pretty Photo插件‘hashrel’参数跨站脚本漏洞 CNNVD编号: CNNVD-201311-405 发布时间: 2013-11-28 更新时间: 201 ...

随机推荐

  1. 20172319 《Java程序设计教程》 第9周学习总结

    20172319 2018.05.06-05.14 <Java程序设计教程>第9周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考 ...

  2. EDK_II环境搭建与测试

    一. 环境准备 Windows 10 (64位)专业版 Visual Studio 2010旗舰版(默认路径安装) Mscrosoft SDKs 7.0A BIOS综合包里的EDK开发环境 二. 实验 ...

  3. MYSQL-不能创建表

    Can't create table '.\ticket\user_role.frm' (errno: 121) 语法是对的,但显示上面的错误 原因有三种 1.表名重复 2.以该名字命名的表之前创建过 ...

  4. Codeforces Round #341 (Div. 2) E. Wet Shark and Blocks dp+矩阵加速

    题目链接: http://codeforces.com/problemset/problem/621/E E. Wet Shark and Blocks time limit per test2 se ...

  5. React监听窗口变化事件

    功能说明:本例子采用MUI table组件 + React实现. 需求描述:固定表头,列表高度随浏览器窗口的改变而改变.(本例中当窗口高度小于472像素后,便不作限制) 实现简介:1.监听浏览器窗口, ...

  6. 打开ubuntu终端的两个方法【最快速】

    两种快捷方法: 1. ctrl+alt+T. 2. 桌面右击,再点击终端.

  7. Scrum 项目7.0——第一个Sprint的总结和读后感

          总结: 通过这一次的Sprint,我了解了Sprint的整个流程,也学会了编制backlog,也了解了在软件工程中,一个团队的任务是怎么样分配和一个项目是怎么样开展的.从对软件工程的认识只 ...

  8. appium遇到问题总结(不断更新)

    问题1 执行脚本 报错: java.lang.NoSuchMethodError: org.openqa.selenium.remote.ErrorHandler.<init>(Lorg/ ...

  9. 设置session的过期时间

    1)修改php.ini文件中的gc_maxlifetime变量就可以延长session的过期时间了 session.gc_maxlifetime = 86400 然后,重启你的web服务(一般是apa ...

  10. HHVM 3.0 发布,执行 PHP 的虚拟机

    HHVM 详细介绍 HipHop VM(HHVM)是Facebook推出的用来执行PHP代码的虚拟机,它是一个PHP的JIT(Just-In- Time)编译器,同时具有产生快速代码和即时编译的优点. ...