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;
    }
    

    逃(

  • 相关阅读:
    还在使用golang 的map 做Json编码么?
    Golang 性能测试(2) 性能分析
    golang 性能测试 (1) 基准性能测试
    消息队列 NSQ 源码学习笔记 (五)
    消息队列 NSQ 源码学习笔记 (四)
    消息队列 NSQ 源码学习笔记 (三)
    消息队列 NSQ 源码学习笔记 (二)
    消息队列 NSQ 源码学习笔记 (一)
    你不知道的空格
    Supervisor 使用和进阶4 (Event 的使用)
  • 原文地址:https://www.cnblogs.com/win10crz/p/12859705.html
Copyright © 2011-2022 走看看