• Maximum Element In A Stack Gym


    2018-2019 ACM-ICPC, China Multi-Provincial Collegiate Programming Contest

    https://vjudge.net/problem/Gym-102222A

    只要按照题目给的步骤进行,而且题目给的代码,不要去去改,否则会错。一开始用一个临时变量去存rng61()的值,但其实不可以。

    还有就是,除了题目给的几个数的数据类型不变以外其他的数包括stack都开long long ,否则会错在第2个点。

    一个简单的思维,为了保持栈顶的元素始终为最大的元素,在push的时候判断一下,当前的栈顶元素和即将push到栈中的元素的大小,放大的。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int n, p, q, m;
     4 unsigned int SA, SB, SC;
     5 stack<long long>sta;
     6 long long maxn(long long a,long long b)
     7 {
     8     if(a>b)
     9         return a;
    10     else
    11         return b;
    12 }
    13 unsigned int rng61()
    14 {
    15     SA ^= SA << 16;
    16     SA ^= SA >> 5;
    17     SA ^= SA << 1;
    18     unsigned int t = SA;
    19     SA = SB;
    20     SB = SC;
    21     SC^=t^SA;
    22     return SC;
    23 }
    24 int main()
    25 {
    26     int t,cas=0;
    27     scanf("%d",&t);
    28     while(t--)
    29     {
    30         scanf("%d%d%d%d%u%u%u",&n,&p,&q,&m,&SA,&SB,&SC);
    31         while(!sta.empty())
    32             sta.pop();
    33         long long ans=0;
    34         for(int i=1;i<=n;i++)
    35         {
    36             if(rng61()%(p+q)<p)
    37             {
    38                 long long tmp=rng61()%m+1;
    39                 if(sta.empty())
    40                     sta.push(tmp);
    41                 else
    42                 {
    43                     long long x=sta.top();
    44                     sta.push(maxn(tmp,x));
    45                 }
    46             }
    47             else
    48             {
    49                 if(!sta.empty())
    50                     sta.pop();
    51             }
    52             if(!sta.empty())
    53                 ans^=i*sta.top();
    54         }
    55         printf("Case #%d: %lld
    ",++cas,ans);
    56     }
    57     return 0;
    58 }
  • 相关阅读:
    android调试推荐使用BlueStacks模拟器调试Android应用
    目录文件Oracle11g彻底删除
    进程间通信学习APUE学习进程间通信(4)
    android选择Windows 8 下配置Cocos2dx + Android + Eclipse 的开发环境
    windbg API 跟踪
    symchk 获取符号文件(PDB)
    acs for PEAPMSCHAPV2
    peapMSCHAPV2
    vs2005 "Key not valid for use in specified state"
    NetUserGetInfo NetUserAdd
  • 原文地址:https://www.cnblogs.com/1024-xzx/p/12019169.html
Copyright © 2020-2023  润新知