zoukankan      html  css  js  c++  java
  • Codeforces Round #381 (Div. 1) A. Alyona and mex 构造

    A. Alyona and mex

    题目连接:

    http://codeforces.com/contest/739/problem/A

    Description

    Alyona's mother wants to present an array of n non-negative integers to Alyona. The array should be special.

    Alyona is a capricious girl so after she gets the array, she inspects m of its subarrays. Subarray is a set of some subsequent elements of the array. The i-th subarray is described with two integers li and ri, and its elements are a[li], a[li + 1], ..., a[ri].

    Alyona is going to find mex for each of the chosen subarrays. Among these m mexes the girl is going to find the smallest. She wants this minimum mex to be as large as possible.

    You are to find an array a of n elements so that the minimum mex among those chosen by Alyona subarrays is as large as possible.

    The mex of a set S is a minimum possible non-negative integer that is not in S.

    Input

    The first line contains two integers n and m (1 ≤ n, m ≤ 105).

    The next m lines contain information about the subarrays chosen by Alyona. The i-th of these lines contains two integers li and ri (1 ≤ li ≤ ri ≤ n), that describe the subarray a[li], a[li + 1], ..., a[ri].

    Output

    In the first line print single integer — the maximum possible minimum mex.

    In the second line print n integers — the array a. All the elements in a should be between 0 and 109.

    It is guaranteed that there is an optimal answer in which all the elements in a are between 0 and 109.

    If there are multiple solutions, print any of them.

    Sample Input

    5 3
    1 3
    2 5
    4 5

    Sample Output

    2
    1 0 2 1 0

    Hint

    题意

    给你n个数,然后m个区间,你需要构造n个数,使得这m个区间的mex最小值最大。

    题解:

    其实只和区间长度有关,你按照0123......0123这样去构造,那个区间总能够包含0到那么多的数的。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,m;
    int main()
    {
        scanf("%d%d",&n,&m);
        int ans = n;
        for(int i=1;i<=m;i++){
            int l,r;
            scanf("%d%d",&l,&r);
            ans = min(ans,r-l+1);
        }
        cout<<ans<<endl;
        for(int i=0;i<n;i++){
            cout<<i%ans<<" ";
        }
        cout<<endl;
    }
  • 相关阅读:
    UT斯达康 G680手机那些事儿
    VoIP使用总结
    Test
    Remove "Click here to enable Instant Search"
    常用的在线播放(电台和电视台)
    Sipdroid Error “Registration failed (404 not found)”
    通过Word 2007发布Blog
    【Go反射】读取对象
    【Go反射】修改对象
    【爬虫】callback=jQuery+数字在爬虫中如何模拟
  • 原文地址:https://www.cnblogs.com/qscqesze/p/6099157.html
Copyright © 2011-2022 走看看