还是贪心法。

把原始数据排序,排序的规则是先依照右端点排序,右端点同样的情况下,再依照左端点排序。然后最左边開始遍历线段,取第一个线段的右端点,推断是否和第二个线段的右端点相等。假设相等,肯定能够缩短为两个相邻的。假设不想等。再推断第一个右端点是否小于第二个左端点,假设小于,则中间肯定有空隙,标记加1。然后在拿第二个的右端点和第三个线段继续同理比較;假设大于,则说明第二个的能够紧邻放在第一个的最右边。相当于把第一个线段放大,这里就是贪心的思想了。

PS:刚開始写cmp函数不小心写了引用,直接CE了一把。

AC代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <string>
#include <sstream>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
#include <stack>
#include <queue>
#include <bitset>
#include <cassert>
#include <cmath>
#include <functional>using namespace std;typedef pair<int, int> Pair;int n;// 先依照右端点从小到大排序,右端点同样的情况下按左端点排序
bool cmp(Pair A, Pair B)
{if (A.second != B.second) {return A.second < B.second;}return A.first < B.first;
}int main()
{ios::sync_with_stdio(false);int T;cin >> T;while (T--) {cin >> n;vector<Pair> A;int x, y;for (int i = 0; i < n; i++) {cin >> x >> y;A.push_back(Pair(x, y));}sort(A.begin(), A.end(), cmp);// 贪心求解int ret = 1, right = A[0].second;for (int i = 1; i < n; i++) {if (right != A[i].second) {if (right < A[i].first) {ret++;right = A[i].second;}else {right++; // 这里就是贪心处理}}}cout << ret - 1 << endl;}return 0;
}

UVa - 1617 - Laptop相关推荐

  1. uva 1617——Laptop

    题意:有n个长度为1的线段,确定它们的起点,使得第i个线段在[ri,di]之间,输出空隙数目的最小值. 思路:贪心.首先对区间进行排序,然后扫描一遍,当上一个线段最右边加1<=当前最左的点的时, ...

  2. 【uva 1617】Laptop(算法效率--贪心,2种理解)

    题意:有N条长度为1的线段,要求使每条线段分别在相应区间,且"空隙"数目最小.输出"空隙"数.(1≤N≤100000) 解法:(P.S.我这题竟做了2个多小时, ...

  3. UVa 1617 笔记本(Laptop)

    题意: 有n条长度为1的线段,确认他们的起点,使得第i条线段在ri 和 di之间,输入保证 ri <= rj 当且仅当 di<=dj 保证有解,输出空隙数目的最小值. 分析: 既然有解.那 ...

  4. 紫书 习题 8-15 UVa 1617 (贪心)

    先排序, 然后每个线段先放右端点, 然后往下放, 如果不能放就整体往左移动, 当不能往左移动的时候就ans++ 开始下一个整块.判断能不能向左移动要用一个变量储存每个已经放了的区间中线段与左端点距离的 ...

  5. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  6. [搜索]UVa 129 困难的串

    题意:将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第n小的困难的串. 输入样例: ...

  7. uva 401.Palindromes

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  8. Uva 3767 Dynamic len(set(a[L:R])) 树套树

    Dynamic len(set(a[L:R])) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/in ...

  9. UVA 11752 超级幂

    UVA 11752 超级幂 Z - The Super Powers Time Limit:1000MS     Memory Limit:0KB     64bit IO Format:%lld & ...

最新文章

  1. 为什么要把html改为jsp,为什么要用ZHTML替换JSP
  2. matlab serial 38400,这个程序的波特率能帮我改到38400吗?
  3. hdu 4293 Groups DP
  4. SpringMVC 测试 mockMVC
  5. 三维网格精简算法java版_ISMAR 2020 | 商汤提出手机端实时单目三维重建系统
  6. weblogic中ssrf漏洞修复_Weblogic-SSRF漏洞复现
  7. 佳能102种相片风格_一位妈妈用蔬菜水果等,为女儿拍了一组相片,没想到在INS火了...
  8. 遗留非springboot传统项目接入eureka注册与服务发现
  9. 群签名和环签名的区别_Monero技术详解(三):核心技术—环签名(1)
  10. nginx编译包含perl模块
  11. Android应用开发初印象
  12. 华为Ensp常用命令
  13. 2021-11-02 Kafka、Zookeeper的下载、打开、关闭
  14. 3个方法教你怎么避免拼多多比价订单
  15. 硬盘根目录里的Msdia80.dll文件
  16. 有趣的23000----整理(07)A词根
  17. 医学领域深度学习模型训练的挑战
  18. MongoBD 系列(1) —— 初识 MongoDB
  19. 根据邮箱查寻邮件系统
  20. aiwi国内最大体感游戏平台 领跑体感游戏第一线

热门文章

  1. 算法分析与设计「五」动态规划
  2. 常见损失函数及正则项
  3. 4024-砾石的交换排序(C++,附思路)
  4. vs 2017 无法安装任何 nuget package,提示“库没有注册。。。”
  5. day30,网络编程和各种协议
  6. 【学习笔记】APP测试基本流程及测试要点
  7. Python自定义分页组件
  8. P4878 道路修建-美国
  9. Asp.Net MVC5入门学习系列⑤
  10. 昨日购买了华为U8800+。晒联通2.2版系统与官方2.3版系统的评测跑分。