zoukankan      html  css  js  c++  java
  • 51nod贪心算法入门-----活动安排问题

    有若干个活动,第i个开始时间和结束时间是[Si,fi),只有一个教室,活动之间不能交叠,求最多安排多少个活动?

    输入

    第1行:1个数N,线段的数量(2 <= N <= 10000)
    第2 - N + 1行:每行2个数,线段的起点和终点(-10^9 <= S,E <= 10^9)
    输出
     
    输出最多可以选择的线段数量。
     
    输入示例

    3
    1 5
    2 3
    3 6

    输出示例

    2
     

    我们可以知道先安排最早结束的活动可以更多的安排活动。首先就是将所有的活动结束时间按先后顺序给排序;然后以结束时间为线索一路检索下去,判断开始时间是否早于前面一次活动的结束时间。这里可以用结构体或者两个数组来把一个活动的开始时间和结束时间联系起来。

     1 #include<stdio.h>
     2 #include<iostream>
     3 #define max 10001
     4 using namespace std;
     5 int main(){
     6     int n,i,j,temps,tempo;
     7     int start[max],over[max];
     8     while(scanf("%d",&n)!=EOF){
     9             int sum=0,t=-1000000000;
    10     for(i=0;i<n;i++){
    11         cin>>start[i]>>over[i];
    12     }
    13     for(i=0;i<n;i++)
    14        for(j=i;j<n;j++){
    15            if(over[i]>over[j]){
    16               tempo=over[i];
    17               over[i]=over[j];
    18               over[j]=tempo;
    19               temps=start[i];
    20               start[i]=start[j];
    21               start[j]=temps;
    22            }
    23        }
    24     for(i=0;i<n;i++){
    25         if(t<=start[i]){
    26             t=over[i];
    27             sum+=1;
    28         }
    29     }
    30     printf("%d
    ",sum);
    31     }
    32     return 0;
    33 }

    //原本我还考虑了活动时间不能为负数的情况,但是在提交时系统给出的数据中把负数也给算了进去。。。。。

  • 相关阅读:
    生成缩略图时报GDI+中发生一般性错误
    跨数据库服务器查询和跨表更新
    javascript,jquery(闭包概念)
    聚集索引和非聚集索引(整理)
    ASP.NET MVC的过滤器
    如何在标题栏title前添加网站logo?
    sql语句执行顺序
    详解ASP.NET MVC的请求生命周期
    在事务中执行批量复制操作SqlBulkCopy,SqlTransaction .
    基于TCP 协议的RPC
  • 原文地址:https://www.cnblogs.com/OMG-By/p/5244765.html
Copyright © 2011-2022 走看看