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;
    }
  • 相关阅读:
    Spring Boot → 08:嵌入式Servlet容器自定义
    Spring Boot → 09:使用外置Servlet容器_tomcat9.0
    Spring Boot → 07:错误处理机制
    Spring Boot → 06:项目实战-账单管理系统
    Spring Boot → 05:Web开发
    zzz Objective-C的消息传递机制
    Objective-C中的SEL、IMP和Class类型(转)
    zzzObjective-C的动态特性
    zzz KVC/KVO原理详解及编程指南
    zzzzz iOS绘图教程
  • 原文地址:https://www.cnblogs.com/qscqesze/p/6099157.html
Copyright © 2011-2022 走看看