zoukankan      html  css  js  c++  java
  • CodeForces 863E Turn Off The TV 思维,扫描线

    CodeForces 863E

    题意:有 n 台电视,每台电视会在 [li, ri] 时间段工作。要你找出一台空闲的电视,空闲定义:设有任意一台电视在工作的总时间为 sum,把第 i 台电视删去, sum 不会减少,则第 i 台电视是空闲的。

    tags:想不出来,看了题解。。还是挺有意思的题

    要找一台空闲的电视,反过来想这台电视如果不空闲,那么在它的工作时间段内至少要有一个时间点是只被一个区间覆盖的。

    所以,我们先离散化处理一下,再类似扫描线处理出每个要用到的时间点被多少个区间覆盖了。

    然后再用一个前缀数组 pre[] 处理出只被一个区间覆盖的点的前缀情况,具体处理是: pre[i] = pre[i-1] + (第 i 个时间点是否只被一个区间覆盖) 。

    坑点: 对于区间 [l, r] ,点 l-1,  r+1 都要用到,也要加上。  数组要最少要开到 4 倍。

    另记:  vector 去重,   ve.erase(unique(ve.begin(), ve.end()),  ve.end());

    #include<bits/stdc++.h>
    using namespace std;
    #pragma comment(linker, "/STACK:102400000,102400000")
    #define rep(i,a,b) for (int i=a; i<=b; ++i)
    #define per(i,b,a) for (int i=b; i>=a; --i)
    #define mes(a,b)  memset(a,b,sizeof(a))
    #define INF 0x3f3f3f3f
    #define MP make_pair
    #define PB push_back
    #define fi  first
    #define se  second
    typedef long long ll;
    const int N = 1000005;
    
    vector<int > ve;
    int n, l[N], r[N], il[N], ir[N];
    int sum[N], pre[N];
    int main()
    {
        scanf("%d", &n);
        rep(i,1,n)
        {
            scanf("%d%d", &l[i], &r[i]);
            ve.PB(l[i]);  ve.PB(r[i]);
            ve.PB(l[i]-1);  ve.PB(r[i]+1);
        }
        sort(ve.begin(), ve.end());
        ve.erase(unique(ve.begin(), ve.end()),  ve.end());
        int sz = ve.size();
        rep(i,1,n)
        {
            il[i] = lower_bound(ve.begin(), ve.end(), l[i]) - ve.begin() + 1;
            ir[i] = lower_bound(ve.begin(), ve.end(), r[i]) - ve.begin() + 1;
            ++sum[il[i]];
            --sum[ir[i]+1];
        }
        rep(i,1,sz)
        {
            sum[i] += sum[i-1];
            pre[i] = pre[i-1] + (sum[i]==1);
        }
        rep(i,1,n)
            if(pre[ir[i]]-pre[il[i]-1] == 0)
            {
                return 0*printf("%d
    ", i);
            }
        puts("-1");
    
        return 0;
    }
  • 相关阅读:
    基于MPI计算π值
    依赖倒转原则
    里氏代换原则
    开闭原则
    以太坊入门-solidity环境搭建
    【owner】today,last second day
    105-算法应用【N皇后问题】代码实现
    【Java小工具】节点选举Demo
    【加密算法】MD5、SHA算法加密工具类
    50-数据结构【原码、反码和补码】计算机数表示方法
  • 原文地址:https://www.cnblogs.com/sbfhy/p/7657791.html
Copyright © 2011-2022 走看看