zoukankan      html  css  js  c++  java
  • ural 1915. Titan Ruins: Reconstruction of Bygones

    翻译:

    时间限制:1秒

    空间限制: 64MB

    对一个栈进行一些操作。详见下。

    输入:

    第一行一个整数N,操作总数。

    接下来N行每行一个操作。若数大于0,代表将该数压栈。 若数等于-1,代表输出并抛弃栈顶元素。若为0,代表将目前栈内所有元素重新压栈。(就是复制一份栈)

    输出:

    每个-1操作时的栈顶元素。

    样例输入:

    8

    3

    4

    0

    -1

    -1

    -1

    -1

    1

    样例输出:

    4

    3

    4

    3

     1 #include <iostream>
     2 #include <cstdio>
     3 const int MAXN = 1000000 + 10;
     4 int a[2 * MAXN];
     5 using namespace std;
     6 int main()
     7 {
     8     int n;
     9     scanf("%d", &n);
    10     int i = 1;                    //i始终指向模拟栈的最后一个元素的下一位置
    11     int t;
    12     while (n--)
    13     {
    14         scanf("%d", &t);
    15         if (t > 0)
    16             a[i++] = t;
    17         else if (t == -1)
    18             printf("%d\n", a[--i]);
    19         else if (t == 0)
    20         {
    21             if (i - 1 <= n)        //优化1:栈中元素大于剩余操作数就不必复制
    22             {
    23                 int num = (i - 1) < n ? (i - 1) : n; //优化2:复制的元素不必比剩余操作数多
    24                 for (int j = 1; j <= num; ++j)
    25                 {
    26                     a[i] = a[i-num];
    27                     ++i;
    28                 }
    29             }
    30         }
    31     }
    32     return 0;
    33 }

    被这一题坑惨了,搞了好长时间,本来我一直用g++4.7.2 c++11提交的,但是总是超时,后来快绝望了,就用vc++提交试试,居然提交了几次都是0.64秒左右AC,又用g++4.7.2提交了几次,0.5秒左右,搞不懂为什么编译器编译后的代码差别那么大。又实验了一些题目,发现用G++4.7.2提交用的时间最快。以后还是用g++4.7.2提交算了。有谁知道原因麻烦告诉我一下,是不是这个c++11最新标准的编译器有缺陷。

  • 相关阅读:
    git branch用法总结
    vue-router异步加载组件
    vue错误提示 Cannot read property 'beforeRouteEnter' of undefined,刷新后跳到首页
    websocket常见错误
    Websocket原理
    怎么在overflow-y:sroll的情况下 隐藏滚动条
    URI和URL有什么区别
    确定浏览器是否支持某些DOM模块
    将nodeList转换为数组(兼容性)
    软件的三种版本
  • 原文地址:https://www.cnblogs.com/PegasusWang/p/3038839.html
Copyright © 2011-2022 走看看