zoukankan      html  css  js  c++  java
  • hdu 2390 Olympic Games

    Olympic Games

    http://acm.hdu.edu.cn/showproblem.php?pid=2390

    Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 757    Accepted Submission(s): 352


    Problem Description
    Mike loves the olympic games. What he hates about olympic games – besides them taking place only once every four years – is that the individual events are scheduled concurrently. That way it is never possible to watch all competitions live. Mike always tries to plan his personal schedule in order to maximize the number of events he can attend to. However, at the end he is never sure whether or not his schedule actually is optimal. Help him!

    Given the days and times on which events take place, determine the maximum number of events Mike can watch. Mike never leaves during an event, so it is not possible to partially attend to events.
     
    Input
    The input starts with a line containing a single integer n, the number of test cases.
    Each test case starts with a line containing an integer 1 <= m <= 50000 that specifies the number of different events. The next m lines describe one event with three integers d, s, e. The event takes place on day d of the olympics, it starts at s and it ends at e, where the times are given in the form hhmm. All events are assumed to conclude the same day they started.
     
    Output
    The output for every test case begins with a line containing “Scenario #i:”, where i is the number of the test case counting from 1. Then, output a single line containing the number of events Mike can attend to at most. The time for getting from one event to another can be neglected. Events starting at time t can be scheduled after events ending at t as long as there are no other conflicts. Terminate each test case with an empty line.
     
    Sample Input
    2
    10
    1 1220 1340
    2 1155 1220
    2 1220 1340
    3 1220 1240
    1 1200 1320
    2 1250 1310
    2 1330 1550
    3 1030 1130
    3 1130 1300
    3 1240 1330
    3
    1 0500 2200
    1 0000 0700
    1 2000 2359
     
    Sample Output
    Scenario #1:
    7
    Scenario #2:
    2
    先给天数排序,同一天按结束时间排序,使用贪心就可以了
    #include<iostream>
    #include<algorithm>
    #include<stdio.h>
    using namespace std;
    struct as
    {
        int day;
        int sta;
        int end;
    } p[50010];
    int cmp(as a ,as b)
    {
        if(a.day>b.day)
            return 0;
        else if(a.day==b.day)
            return a.end<b.end;
        else
            return 1;
    }
    int main()
    {
        int t,n,i,time,sum,pos,ko=1;
        cin>>t;
        while(t--)
        {
            sum=0;
            cin>>n;
            for(i=0; i<n; i++)
                scanf("%d%d%d",&p[i].day,&p[i].sta,&p[i].end);
            sort(p,p+n,cmp);
            sum++;
            time=p[0].day;//记录天数
            pos=0;//用来记录当前的位置
            for(i=1; i<n; i++)
            {
                if(p[i].day==time&&p[i].sta>=p[pos].end)
                {
                    sum++;
                    pos=i;
                }
                if(p[i].day!=time)
                {
                    time=p[i].day;
                    pos=i;
                    sum++;
                }
            }
            cout<<"Scenario #"<<ko<<":"<<endl;
            cout<<sum<<endl<<endl;
            ko++;
        }
    }
    View Code
  • 相关阅读:
    PHP基础函数、自定义函数以及数组
    php 中 isset 和empty 的区别
    mysql中索引的使用
    mysql 中的增改查删(CRUD)
    mysql语句应该注意的问题
    《zw版·Halcon-delphi系列原创教程》 水果自动分类脚本(机器学习、人工智能)
    《zw版·Halcon-delphi系列原创教程》 2d照片-3d逆向建模脚本
    《zw版·Halcon-delphi系列原创教程》简单的令人发指,只有10行代码的车牌识别脚本
    《zw版·Halcon-delphi系列原创教程》航母舰载机·视觉定位标志的识别代码
    zw版_zw中文增强版Halcon官方Delphi例程
  • 原文地址:https://www.cnblogs.com/ainixu1314/p/3234621.html
Copyright © 2011-2022 走看看