zoukankan      html  css  js  c++  java
  • 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







  • 相关阅读:
    Aster寻路算法1(转)
    谈谈项目纵向项目验收
    要有兴趣
    用c# 操作 文件的方法
    使用ACT进行测试
    Generated servlet error: keyword cannot be resolved or is not a type
    米尔顿艾瑞克森的催眠引导词
    c# webcliend 来制作 网页搜捕器
    网页木马的解决方案
    用Swing实现数据表格功能
  • 原文地址:https://www.cnblogs.com/bxd123/p/10993484.html
Copyright © 2011-2022 走看看