zoukankan      html  css  js  c++  java
  • 题解 CF767A 【Snacktower】

    这题竟然没有题解,小蒟蒻就来捡个漏吧 (ldotsldots)

    其实这题就是照题意模拟就行了。我的思路就是:读入完之后,将这 (n) 个数从头到尾进行一次扫描,用一个布尔型的数组记录 (1)(n) 这些尺寸是否出现过。

    在每个循环的开始,将当前天的零食的尺寸标记为出现过。

    然后再进入一个循环,从 (n) 循环到 (1),也就是零食塔的从下往上的尺寸。如果 (i) 这个尺寸已经出现,就输出,并把 (i) 再标记为未出现,防止下次循环重复输出;否则,就立刻跳出循环。(具体看代码注释)

    原始代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define MAXN 100005
    #define rg register
    int n,a[MAXN];
    bool book[MAXN];
    int main()
    {
        cin>>n;
        for(rg int i=1;i<=n;++i)
        	cin>>a[i];            //输入部分。 
        for(rg int i=1;i<=n;++i)
        {
        	book[a[i]]=1;         //标记当前的尺寸出现过。 
        	for(rg int j=n;j>=1;j--)
        	{
        		if(book[j]==1)     //如果这个尺寸出现过,就输出。 
        		{
        			cout<<j<<" ";  
        			book[j]=0;      //重新标记为未出现。 
        		}
        		else
        			break;     //否则立即跳出。 
        	}
        	cout<<endl;    //不要忘了换行。 
    	}
        return 0;
    }
    

    其实还可以优化,用一个变量记录目前未输出的最大的尺寸,第二个循环就可以从这个变量开始。

    优化过代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define MAXN 100005
    #define rg register
    int n,a[MAXN],now;    //now 用来记录目前未输出的最大零食尺寸。 
    bool book[MAXN];
    int main()
    {
        cin>>n;
        now=n;   //初始化为 n。 
        for(rg int i=1;i<=n;++i)
        	cin>>a[i];
        for(rg int i=1;i<=n;++i)
        {
        	book[a[i]]=1;
        	for(rg int j=now;j>=1;j--)
        	{
        		if(book[j]==1)
        			cout<<j<<" ";   //因为每次是从未输出的开始,已输出的就不用标记。 
        		else
        		{
        			now=j;          //更新 now。 
        			break;
        		}
        	}
        	cout<<endl;
    	}
        return 0;
    }
    

    逃(

  • 相关阅读:
    [BAT] 以当前时间为名创建文件夹,将本地文件夹里的文件拷贝到远程共享目录,而且保证本地和Jenkins上运行都成功
    [Jenkins] 执行SoapUI的task,设置邮件内容为HTML+CSS
    bzoj 2435 dfs处理
    Gym 100989E 字符串
    Codeforces Beta Round #95 (Div. 2) C 组合数学
    Gym 100989F 水&愚&vector
    Gym 100971C 水&愚&三角形
    Gym 100971B 水&愚
    HDU 5696 RMQ+滑窗
    UVA 1619/POJ2796 滑窗算法/维护一个单调栈
  • 原文地址:https://www.cnblogs.com/win10crz/p/12859705.html
Copyright © 2011-2022 走看看