URAL 1915 Titan Ruins: Reconstruction of Bygones(思路)
搞这个题差不多是从比赛开始到结束。
从自信慢慢的看题一直到wrong到死。
这个题目可以说成是思路题,以为我们只要明白一点,这道题就成了纯暴力的水题,
那就是当操作数不足栈中数字数目的时候,我们就没有必要复制了。
注意数组要开足,如果是一路复制的话,2^20就可以到10^6次方级了,在cur<n的情况下,cur的范围是有可能超10^6的,所以,我们至少要开到2*10^6大小。
代码如下:
#include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <queue> #include <stack> #include <map> #include <vector> #include <algorithm> #define M 1000005 using namespace std; int st[2*M]; int main () { int n, x, cur; while(~scanf("%d",&n)) { cur = 0; while(n--) { scanf("%d",&x); if(x==0) { if(cur<n) { for(int i = 0; i < cur; ++i) st[cur+i] = st[i]; cur += cur; } } else if(x==-1) { cur-=1; printf("%d\n",st[cur]); } else { st[cur] = x; ++cur; } } } return 0; }