zoukankan      html  css  js  c++  java
  • TZOJ:区间问题

    描述

    有n项工作,每项工作分别在 si时间开始,ti时间结束。对于每项工作你选择参与与否,如果选择 了参与,那么自始至终就必须全程参与。参与工作的时间段不可以重叠(即使是开始的瞬间和结束的瞬间重叠也是不允许的) 。

    你的目标是参与尽可能多的参与工作,那么最多能参与多少项工作呢?

    输入

    输入数据有多组,每组数据:

    第一行为正整数n(1<=n<=10^5),表示工作的数目;

    第二行有n个整数,表示每项工作的起始时间si;

    第三行有n个整数,表示每项工作的结束时间ti。

    1<=si<=ti<=10^9

    输入以EOF结束。

    输出

    每组输出一个整数,表示最多能参与的工作数目。

    样例输入

    样例输出

    解题思路:按照结束时间快排一下,自己想一下就清楚了。

    菜鸡的成长史 ^-^

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 struct node
     4 {
     5     int x,y;
     6 }A[100006];
     7 bool cmp(node a,node b) 
     8 {
     9     if(a.y!=b.y) //按照结束时间进行排序
    10         return a.y<b.y; 
    11     return a.x<b.x;
    12 }
    13 int main()
    14 {
    15     ios::sync_with_stdio(false);
    16     int n;
    17     while(cin>>n)
    18     {
    19         for(int i=1;i<=n;i++)
    20             cin>>A[i].x;
    21         for(int i=1;i<=n;i++)
    22             cin>>A[i].y;
    23         sort(A+1,A+1+n,cmp);
    24         int sum=1;
    25         for(int i=1,j=i+1;i<=n-1,j<=n;j++)
    26         {
    27             if(A[i].y<A[j].x)  //贪心的思想
    28             sum++,i=j;
    29         }
    30         cout << sum << endl;
    31     }
    32 }
    View Code
  • 相关阅读:
    你所不知道的 C# 中的细节
    数据分析与数据挖掘 ---- 系列教程
    Tiny Core Linux 安装配置
    Debian 安装
    基于C#的内网穿透学习笔记(附源码)
    Layui前端框架介绍
    使用 C# 捕获进程输出
    sonar扫描——方法重构分析
    消除代码中的坏味道,编写高质量代码
    TensorFlow之张量
  • 原文地址:https://www.cnblogs.com/qq-1585047819/p/10599309.html
Copyright © 2011-2022 走看看