http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428

1428 活动安排问题

基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
收藏
关注
有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室? 
Input
第一行一个正整数n (n <= 10000)代表活动的个数。
第二行到第(n + 1)行包含n个开始时间和结束时间。
开始时间严格小于结束时间,并且时间都是非负整数,小于1000000000
Output
一行包含一个整数表示最少教室的个数。
Input示例
3
1 2
3 4
2 9
Output示例
2
   我一开始用的贪心按照结束时间排序之后遇到没法接着用的事件就开辟一间新的教室记录下结束时间,每次找教室时优先选择结束时间靠后的尽可能充分利用时间,最后输出答案。感觉可能T不过数据可能不大也A了。
   还有一种巧妙地法子是将开始和结束时间一起排序,遇见开始就+1,否则-1,记录下中间的最大值就是答案,很妙啊。。
 #include<bits/stdc++.h>
using namespace std;
#define LL long long
struct node{int l,r;}P[];
bool cmp(node A,node B)
{
if(A.r!=B.r) return A.r<B.r;
else return A.l<B.l;
}
int vis[];
int main()
{
int N,i,j,k;
cin>>N;
for(i=;i<=N;++i){
scanf("%d%d",&P[i].l,&P[i].r);
}
sort(P+,P++N,cmp);
int s=;
vector<int>vi;
for(i=;i<=N;++i)
{
if(vi.empty()) {s++;vi.push_back(P[i].r);continue;}
int u=-,w=-,ok=;
for(j=;j<vi.size();++j)
{
if(P[i].l>=vi[j]){
ok=;
if(w<vi[j]){
w=vi[j];
u=j;
}
}
}
if(!ok){s++;vi.push_back(P[i].r);}
else vi[u]=P[i].r;
}
cout<<s<<endl;
return ;
}
 #include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
vector<pair<int,int> >event;
int main()
{
int n;
scanf("%d",&n);
int st,ed;
for(int i=;i<n;i++)
{
scanf("%d%d",&st,&ed);
event.push_back(make_pair(st,));
event.push_back(make_pair(ed,-));
}
sort(event.begin(),event.end());
int cnt=,ans=;
for(int i=;i<event.size();i++)
{
cnt+=event[i].second;
if(ans<cnt)ans=cnt;
}
printf("%d\n",ans);
return ;
}
 

51nod 1428 贪心的更多相关文章

  1. 51Nod 1428 活动安排问题

    51Nod   1428  活动安排问题 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 1428 活 ...

  2. 51nod 1428 活动安排问题 (贪心+优先队列)

    来源:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 首先按照开始时间从小到大排序. 其实只要维护一个结束时间的最 ...

  3. 51nod 1428【贪心】

    思路: 就是先排序,然后对每个取最小的结束时间. #include <bits/stdc++.h> using namespace std; typedef long long LL; c ...

  4. 51nod 1163贪心

    用优先队列来贪心,是一个很好地想法.优先队列在很多时候可以维护最值,同时可以考虑到一些其他情况. http://www.51nod.com/onlineJudge/questionCode.html# ...

  5. 51nod 1625 贪心/思维

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1625 1625 夹克爷发红包 基准时间限制:1 秒 空间限制:13107 ...

  6. 51nod 1099 贪心/思维

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1099 1099 任务执行顺序 基准时间限制:1 秒 空间限制:13107 ...

  7. 51nod 1428 活动安排问题(优先队列)

    1428 活动安排问题 首先按照开始时间从小到大排序. 其实只要维护一个结束时间的最小堆,每次比较开始时间和堆中最小时间的大小,如果比它大就放入堆中并且时间就要变成当前任务的结束时间, 否则就要新开一 ...

  8. 51nod 1672 贪心/队列

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1672 1672 区间交 基准时间限制:1 秒 空间限制:131072 K ...

  9. 51nod 1449 贪心

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1449 1449 砝码称重 题目来源: CodeForces 基准时间限制 ...

随机推荐

  1. MySQL权限系统(二). MySQL提供的特权 Privileges Provided by MySQL

    MySQL provides privileges that apply in different contexts and at different levels of operation: Adm ...

  2. PAT 1069. 微博转发抽奖(20)

    小明PAT考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔N个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入格式: 输入第一行给出三个正整数M(<= 1000).N ...

  3. 3.6中的range()

    在python3中range()是这样的: >>> range(4) range(0, 4) #额,列表跑哪去了 在之前的python2中是这样的: >>> ran ...

  4. id函数

    描述 id() 函数用于获取对象的内存地址. 语法 id 语法: id([object]) 参数说明: object -- 对象. 返回值 返回对象的内存地址. 实例 以下实例展示了 id 的使用方法 ...

  5. ABP框架数据迁移报错

    问题描述:将项目从TFS载下来  然后敲update-database 进行数据迁移 提示:Update-Database : 无法将“Update-Database”项识别为 cmdlet.函数.脚 ...

  6. 关于java登录界面

    import java.awt.*; 包含用于创建用户界面和绘制图形图像的所有类.   import javax.swing.*; 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所 ...

  7. <script>放在head内和body内有什么区别

    加载的顺序不一样,你可以把HTML看成从上往下加载的. 例如在网速慢的情况下把js代码放在body底部用户会先看到网页结构,等js加载完成后才出现特效 区别简述: 在HTML body部分中的Java ...

  8. 在freescale mx6q平台上添加spi资源

    1:配置管脚为SPI功能 在board-mx6q_sabresd.h的最后添加,复制被重定义 (以添加SPI2为例) <span style="font-size:18px;" ...

  9. Qt5.3.0的安装与测试

    Qt5.3.0的安装与测试(交叉编译,用于arm,支持tslib触摸屏) 本次移植可以使用触摸屏. 首先下载源码包: http://download.qt.io/official_releases/q ...

  10. [SCOI2005]超级格雷码

    题目 BZOJ 洛谷 做法 爆搜真有意思 满足不重复且异或后仅一位为\(1\) 利用奇偶性交叉搜索(仅改变一位) My complete code #include<bits/stdc++.h& ...