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

1428 活动安排问题

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

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. Web 框架本质解析

    一  Web框架本质 1. 自己开发Web框架 - socket - http协议 - HTML知识 - 数据库(pymysql,SQLAlchemy) HTTP: 无状态.短连接 TCP: 不断开 ...

  2. Android基础入门教程

    http://www.kancloud.cn/wizardforcel/w3school-android/100491

  3. 自定义gradle plugin

    最近开始接触gradle 正好有个需求apidoc

  4. 分层架构下的纯JDBC事务控制简单解决方案【转】

    http://blog.csdn.net/qjyong/article/details/5464835 对目前的JavaEE企业应用开发来说,基本都会采用分层的架构, 这样可以分散关注.松散耦合.逻辑 ...

  5. npm安装出错Unexpected end of input at 1:2307

    执行命令: npm cache clean --force 然后再安装 搞定

  6. ios-如何搭建IPv6网络测试环境(转)

    工具/原料   mac一台 iPhone手机2台(一台用于测试,另一台提供网络) 方法/步骤     准备网络.通过数据线连接iPhone和Mac,并将iPhone手机连接的Wi-Fi关闭,使用自己的 ...

  7. 配置NFS作为HDFS高可用的共享存储系统

    所有命令或步骤: 首先,在各个节点上安装nfs服务 yum install -y nfs service rpcbind start service nfs start 配置开机自启动服务 chkco ...

  8. vRO Extend VirtualDisk Workflow

    https://vbombarded.wordpress.com/2015/02/20/vrealize-orchestrator-extend-virtual-disk-workflow/ var ...

  9. 常用 GDB 命令中文速览

    转自:https://linux.cn/article-8900-1.html?utm_source=index&utm_medium=moremore 目录 break -- 在指定的行或函 ...

  10. STAR manual

    来源:STARmanual.pdf 来源:Calling variants in RNAseq PART0 准备工作 #STAR 安装前的依赖的工具 #Red Hat, CentOS, Fedora. ...