• P1750 出栈序列 贪心


      

    题目描述

    给定一个由n个元素构成的序列,你需要将其中的元素按顺序压入一个大小为c的栈并弹出。元素按它们的出栈顺序进行排列,会得到一个新的序列。我们知道,这样的序列会有很多种,请输出所有新序列中第一个元素最小的序列(若第一个元素最小的序列有多个,则令第二个尽可能小;若仍有多个,则令第三个最小,以此类推)。

    输入输出格式

    输入格式:

    第一行,两个数n,c

    第二行n个数,为序列中n个元素的值

    输出格式:

    输出n个数,为满足要求的序列。

    输入输出样例

    输入样例#1: 复制
    6 3
    5 2 3 8 7 4
    输出样例#1: 复制
    2 3 5 4 7 8


    显然单调队列是错的
    如 4 3
    1 3 4 2

    • 此题思路其实很简单,所谓的贪心其实就是模拟,模拟一个滑动窗口 
    #include<bits/stdc++.h>
    using namespace std;
    long long a[10005];
    bool used[10005];
    int main()
    {
        long long n,c,i,j;
        scanf("%lld%lld",&n,&c);
        for(i=1;i<=n;i++)
        {
            scanf("%lld",&a[i]);
        }
        long long l=1,r=c,k=n,minn,mi;
        while(k!=0)
        {
            minn=9999999999;
            for(i=l;i<=r;i++)
            {
                if(a[i]<minn&&used[i]==0) 
                {
                    minn=a[i];
                    mi=i;
                }
            }
            if(k==0) printf("%lld
    ",minn);
            else printf("%lld ",minn);
            k--;
            used[mi]=1;
            long long z=0;
            for(j=mi-1;j>=1;j--)
            {
                if(used[j]==0)
                {
                    l=j;
                    z=1;
                    break;
                }
            }
            if(r<n) r++;
            if(z==0) l++;
        }
        return 0;
    }
    View Code







  • 相关阅读:
    mysql数据库——特殊sql语句整理之修改表结构
    mysql数据库引擎——MyISAM,InnoDB
    Golang程序性能分析
    Docker基本操作
    go module
    Docker基础原理
    基于zookeeper或redis实现分布式锁
    漫谈微服务
    快速排序
    设计模式泛谈
  • 原文地址:https://www.cnblogs.com/bxd123/p/10993484.html
Copyright © 2020-2023  润新知