zoukankan      html  css  js  c++  java
  • bzoj 1664 (贪心)

     [Usaco2006 Open]County Fair Events 参加节日庆祝

    Time Limit: 5 Sec  Memory Limit: 64 MB
    Submit: 487  Solved: 344
    [Submit][Status][Discuss]

    Description

    Farmer John has returned to the County Fair so he can attend the special events (concerts, rodeos, cooking shows, etc.). He wants to attend as many of the N (1 <= N <= 10,000) special events as he possibly can. He's rented a bicycle so he can speed from one event to the next in absolutely no time at all (0 time units to go from one event to the next!). Given a list of the events that FJ might wish to attend, with their start times (1 <= T <= 100,000) and their durations (1 <= L <= 100,000), determine the maximum number of events that FJ can attend. FJ never leaves an event early.

    有N个节日每个节日有个开始时间,及持续时间. 牛想尽可能多的参加节日,问最多可以参加多少. 注意牛的转移速度是极快的,不花时间.

    Input

    * Line 1: A single integer, N.

    * Lines 2..N+1: Each line contains two space-separated integers, T and L, that describe an event that FJ might attend.

    Output

    * Line 1: A single integer that is the maximum number of events FJ can attend.

    Sample Input

    7
    1 6
    8 6
    14 5
    19 2
    1 8
    18 3
    10 6

    INPUT DETAILS:

    Graphic picture of the schedule:
    11111111112
    12345678901234567890---------这个是时间轴.
    --------------------
    111111 2222223333344
    55555555 777777 666

    这个图中1代表第一个节日从1开始,持续6个时间,直到6.

    Sample Output

    4
     
    这里很容易贪心证明,不需要去O(n^2)去跑,很容易被卡。

    就是这里的,想象成许多线段,如果相交,若当前线段右端比以前线段右端小,那么就赋值为现在那条线段,因为这样只会更优。

    如果不想交,直接ans+1

    划水

     1 #include<cstring>
     2 #include<cmath>
     3 #include<algorithm>
     4 #include<iostream>
     5 #include<cstdio>
     6 
     7 #define N 10007
     8 using namespace std;
     9 inline int read()
    10 {
    11     int x=0,f=1;char ch=getchar();
    12     while(ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
    13     while(ch<='9'&&ch>='0')
    14     {
    15         x=(x<<3)+(x<<1)+ch-'0';
    16         ch=getchar();
    17     }
    18     return x*f;
    19 }
    20 
    21 int n,ans;
    22 struct Node
    23 {
    24     int x,y;
    25 }a[N];
    26 
    27 bool cmp(Node x,Node y)
    28 {
    29     return x.x<y.x;
    30 }
    31 int main()
    32 {
    33     n=read();
    34     for (int i=1;i<=n;a[i].x=read(),a[i].y=a[i].x+read()-1,i++);
    35     sort(a+1,a+n+1,cmp);
    36     
    37     for (int i=1,r=0;i<=n;i++)
    38     {
    39         if (a[i].x>r) ans++,r=a[i].y;
    40         else if (a[i].y<r) r=a[i].y;
    41     }
    42     printf("%d",ans);
    43 }
  • 相关阅读:
    笔记3
    笔记
    指令操作、例子
    python文件操作
    pandas处理excel
    Flask资源
    ImportError: DLL load failed while importing _ssl: 找不到指定的模块。 Failed
    WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
    selenium 安装与 chromedriver安装
    ubuntu 更换清华源
  • 原文地址:https://www.cnblogs.com/fengzhiyuan/p/7911758.html
Copyright © 2011-2022 走看看