zoukankan      html  css  js  c++  java
  • 嵊州普及Day4T2

    题意:有一个单行走廊,每回合第ai个展柜会冒出来一只鬼,右边尽头有一个人间大炮和向最左传送门(费用均1金币),你需要每回合将所有鬼交换展柜,全部至最右,问若从一到n所有回合结束是需多少金币可射死所有鬼。

    思路:花一块可将一只鬼挪至最右,然后使用一个指针储蓄最右有几个鬼,然后相减就可以了。

    见代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int n,k,a[300001],b[300001];
    bool c[300001];
    int main()
    {
        freopen("coin.in","r",stdin);
        freopen("coin.out","w",stdout);
        cin>>n;
        k=n;
        b[0]=1;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            c[a[i]]=true;
            if(a[i]==k)
            {
                while(c[k]==true)
                k--;
                if(k==n-i)
                b[i]=1;
                else
                b[i]=b[i-1];
            }
            else
            b[i]=1+b[i-1];
        }
        for(int i=0;i<=n;i++)
        cout<<b[i]<<" ";
        return 0;
    }

    又双叒叕炸掉了!

    原因是部分在右部分不在右的情况未考虑清。

    见代码*2:

    #include<iostream>
    using namespace std;
    int n,k,a[300001],b[300001];
    bool c[300001];
    int main()
    {
        cin>>n;
        k=n;
        b[0]=1;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            c[a[i]]=true;
            b[i]=b[i-1]+1;
            if(a[i]==k)
            {   
                while(c[k]==true)
                {
                    b[i]--;
                    k--;
                }
            }
        }
        for(int i=0;i<=n;i++)
        cout<<b[i]<<" ";
        return 0;
    }

    好题哉!!!

  • 相关阅读:
    tomact与eclipces的配置
    IDEA中Flink环境pom.xml文件配置
    python读写mysql
    用pyspark实现Wordcount
    python计算相似度
    Spark读取mysql
    Spark之WordCount
    IDEA中Spark环境pom.xml文件配置
    Spark之HelloWorld
    (转)二叉树的中序遍历与后序遍历构造二叉树思路(递归方法,含图片说明)
  • 原文地址:https://www.cnblogs.com/qing1/p/11185594.html
Copyright © 2011-2022 走看看