码迷,mamicode.com
首页 > 其他好文 > 详细

TZOJ:区间问题

时间:2019-03-26 13:46:49      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:成长   hid   lap   time   div   pen   开始   src   思路   

描述

 

有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

 

TZOJ:区间问题

标签:成长   hid   lap   time   div   pen   开始   src   思路   

原文地址:https://www.cnblogs.com/qq-1585047819/p/10599309.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!