zoukankan      html  css  js  c++  java
  • 牛客练习赛44 A:小y的序列(模拟)

    链接:https://ac.nowcoder.com/acm/contest/634/A
    来源:牛客网
     

    题目描述

    小y有一块长度为n的布匹。颜色全部为0。他要给这个布匹染色。他总共有m种染料。小y认为一种染料用多次是不和谐的。所以每种染料会被用刚好一次。也就是说小y要给这块布匹染m次色。第i次会把Li到Ri这个区间染成颜色i。现在给出最终布匹每段的颜色。请你输出一种染色方案。数据保证有解

    输入描述:

    输入共两行。
    第一行两个个正整数n,m,表示布匹的长度和染料的数量
    第二行n个用空格隔开的正整数,第i个数字ai
    

    输出描述:

    输出m行。
    第i行包含两个正整数Li,Ri,表示第i次染色的区间。

    示例1

    输入

    复制

    3 3
    1 2 3

    输出

    复制

    1 3
    2 3
    3 3

    备注:

    1≤n,m≤10^5
    0≤ai≤m
    1≤Li≤Ri≤n
    

     解题思路:

    更新每一个颜色的左右边界,如果没有发现某一个颜色,把它放到最后一个颜色可以覆盖的地方。

    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    #define N 100020
    int l[N],r[N];
    int main()
    {
        int n,m,i,x;
        scanf("%d%d", &n, &m);
        for(i=1; i<=n; i++)
        {
            scanf("%d", &x);
            if(l[x] == 0)
            	l[x] =  i;
            r[x] =  i;
        }
        for(i=m; i>=1; i--)
        	if(r[i])
        	{
        		x = r[i];
    			break; 
    		}
        		
        for(i=1; i<=m; i++)
        	if(l[i])
            	printf("%d %d
    ", l[i] , r[i]);
            else
            	printf("%d %d
    ", x, x);
        return 0;
    }
  • 相关阅读:
    2
    1
    Hadoop集群常见报错汇总
    Kerberos常见报错汇总
    Python软件包管理工具pip实战篇
    Python软件包及环境管理器conda实战篇
    Python的Virtualenv与Venv环境管理器
    Python的编辑工具-Jupyter notebook实战案例
    文档工具GitBook使用指南
    20200912
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/11852744.html
Copyright © 2011-2022 走看看