• 洛谷 p1803 凌乱的yyy


    这是一道贪心思想的题目,这个题目的贪心类型非常经典,在《挑战程序设计竞赛》中贪心这一节有对这类题型的讲解

    基本上可以概述为,给定一堆区间(给出区间起点和终点),然后选区间,但是有重复区域的区间不能都选,求出最多可选多少区间

    这道题的思想就是优先选结束时间最短的区间,因为无论区间开始时间如何,若结束时间短,它便会留出更多空间给其它区间

    可能有人会有疑问,若有很多很多开始时间卡在那个最短区间区域内的区间时,岂不是那么多区间就都不能选了

    实际上,就是不能选,仔细想一想,即使那些区间很多,但是若选了那些区间中的任意一个,其它的这类区间也都选不了了,到头来那么多区间也是只有一个区间被选上,同时由于你选的这个不是结束时间更短的,反而还会造成后面开始的区间也选不上,所以无论怎样,你都会发现选最早结束的区间是最划算的

    #include<bits/stdc++.h>
    using namespace std;
    
    bool cmp(pair<int, int> a, pair<int, int> b){
      return a.first < b.first;
    }
    
    int main(){
      ios::sync_with_stdio(false);
      int n;
      cin >> n;
      vector< pair<int, int> > cts(n);
    
      for(int i=0; i<n; i++)
        cin >> cts[i].second >> cts[i].first;
    
      sort(cts.begin(), cts.end(), cmp);
    
      int ans=0, end=0;
      for(int i=0; i<n; i++){
        if(cts[i].second >= end){
          ans++;
          end = cts[i].first;
        }
      }
    
      cout << ans;
      return 0;
    }
  • 相关阅读:
    bootstrap模版
    spark
    断点
    如何让数据动起来?Python动态图表制作一览。
    证据就在代码里
    windows下oracle的ora-27100错误
    SQL优化 | MySQL问题处理案例分享三则
    MySQL安装好之后本地可以连接,远程连接卡死
    MySQL千万级大表在线变更表结构
    ORA-39006错误原因及解决办法
  • 原文地址:https://www.cnblogs.com/ssNiper/p/11253347.html
Copyright © 2020-2023  润新知