zoukankan      html  css  js  c++  java
  • HDU 2037 今年暑假不AC

    解题报告:

    题目大意:有若干的节目,现在知道节目开始的时间和结束的时间,问题是求最多可以看多少个完整的节目。

    贪心题,想要在固定的时间内看尽量多的节目就必须保证看每个节目的时候都要尽可能快的结束当前这个节目,以便尽快看下一个节目。具体贪心的思想就是首先将所有的节目按照结束的时间从早到晚排一次序,然后定义一个时间指针,指向当前的时间,然后将开始时间距离当前时间最近的那个的那个节目看掉,因为已经按照节目结束的时间进行排过序 了,所以不用考虑选择当前时间以后的哪一个节目的问题。当当前时间指针移动到了结束时间最晚的那个节目的结束的时间时,便结束循环。

     1 #include<cstdio>
     2 #include<algorithm> 
     3 struct node {
     4     int sta,end;
     5 }list[100+5];
     6 bool cmp(node a,node b) {
     7     return (a.end<b.end);
     8 }
     9 int main() {
    10     int n;
    11     while(scanf("%d",&n)&&n!=0) {
    12         for(int i=1;i<=n;++i)
    13         scanf("%d%d",&list[i].sta,&list[i].end);
    14         std::sort(list+1,list+n+1,cmp);
    15         int now=0,sum=0;
    16         for(int i=1;i<=n;++i)
    17         if(list[i].sta>=now) {
    18             sum++;
    19             now=list[i].end;
    20         }
    21         printf("%d\n",sum);
    22     }
    23     return 0;
    24 }
    View Code
  • 相关阅读:
    python zip()函数转置表,操作列
    python 集合 无序非重 容器的操作
    前行
    工作读书放松: 做其他事情 1.运动(如焦),2.闭眼睡觉休息(如蔡),3.选择读其他书
    心在哪时间在哪路在哪
    vi全部替换
    选择
    知识 代码 算法
    code algorithm
    绕过CND查找真是IP地址
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3076560.html
Copyright © 2011-2022 走看看