zoukankan      html  css  js  c++  java
  • 2372: 给牛照相

    2372: 给牛照相

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 40  解决: 8
    [提交][状态][讨论版][命题人:外部导入]

    题目描述

    农夫约翰想给他的N (2 <= N <= 1,000,000,000) 头牛照相,这些牛站成一排分别编号为1..N。每张照片可以拍摄连续的一些牛,并且约翰想让每头牛至少出现在一张照片上。
    不幸的是有一些牛脾气不合,不想出现在同一张照片上,不合的牛有K(1 <= K <= 1000)对。给出这K对不合关系,算一下约翰最少需要拍多少张照片。

    输入

    第1行,两个整数N和K
    第2到K+1行,每行两个数A和B,表示位置在A和B的两头牛不合,因此不能在同一张照片中。

    输出

    一个整数,表示约翰最少需要拍多少张照片数。

    样例输入

    7 3
    1 3
    2 4
    5 6

    样例输出

    3

    提示

    约翰需要拍3张照片。

    第一张拍1-2号牛

    第二张拍3-5号牛

    第三张拍6-7号牛
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct s
    {
        int a1;
        int a2;
    }a[1010];
    bool cmp(const s & a, const s & b)
    {
        return a.a1 < b.a1;
    }
    int main()
    {
        int n, k, x, y;
        cin >> n >> k;
        for(int i = 0; i < k; ++i)
        {
            cin >> x >> y;
            a[i].a1 = x > y ? y : x;
            a[i].a2 = x > y ? x : y;
        }
        sort(a, a + k, cmp);
        int t = 0, sum = 1;
        int flag1, flag2;
        for(int i = t; i < k; i = t)
        {
            flag1 = a[i].a1;
            flag2 = a[i].a2;
            for(int j = i + 1; j < k; ++j)
            {
                if(a[j].a1 >= flag1 && a[j].a1 <= flag2)
                {
                    flag1 = a[j].a1;
                    flag2 = a[j].a2 > flag2 ? flag2 : a[j].a2;
                    t = j;
                }
            }
            t++;
            sum++;
        }
        cout << sum << endl;
        return 0;
    }
    

      

  • 相关阅读:
    [转]BIOS中断汇编函数---留用
    SWT/JFace 按键、事件、监听
    erlang局域网内通信
    ios热修复
    swift里面!和?的作用
    AFNetworking上传下载图片
    横向滚动的UITableView
    判断iphone手机型号
    iPhone屏幕尺寸、分辨率及适配
    UITapGestureRecognizer 和UIPanGestureRecognizer的使用,触摸和滑动
  • 原文地址:https://www.cnblogs.com/mjn1/p/9866376.html
Copyright © 2011-2022 走看看