美文网首页
Maximum Element In A Stack

Maximum Element In A Stack

作者: 雨落八千里 | 来源:发表于2019-09-26 22:25 被阅读0次

    Maximum Element In A Stack

    题意:

    • 经过一些操作将一些数压入栈内,最后输出异或每一步执行操作的序号乘以对应操作时栈中最大值

    思路:

    • 模拟操作
    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int M=5*1e6+10;
    int n,p,q,m;
    ll stk[M];
    int cnt;
    ll ans;
    unsigned int SA,SB,SC;
    unsigned int rng( )
    {
        SA^=SA<<16;
        SA^=SA>>5;
        SA^=SA<<1;
        unsigned int t=SA;
        SA=SB;
        SB=SC;
        SC^=t^SA;
        return SC;
    }
    void gen( )
    {
        scanf("%d%d%d%d%u%u%u",&n,&p,&q,&m,&SA,&SB,&SC);
        for(int i=1; i<=n; i++)
        {
            if(rng( )%(p+q)<p)//存入
            {
                int w=rng( )%m + 1;
                if(cnt==0||stk[cnt-1]<w)//存入每一步当前的最大值
                {
                    stk[cnt]=w;
                    cnt++;
                }
                else//最大值等于上一个最大值
                {
                    stk[cnt]=stk[cnt-1];
                    cnt++;
                }
            }
            else if(cnt)//删除一个元素
            {
                cnt--;
            }
            if(cnt)//数组中有元素
            {
                ans^=i*stk[cnt-1];
            }
        }
    }
    int main( )
    {
        int t;
        int k=0;
        scanf("%d",&t);
        while(t--)
        {
            k++;
            cnt=0;
            ans=0;
            gen( );
            printf("Case #%d: %lld\n",k,ans);
        }
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:Maximum Element In A Stack

          本文链接:https://www.haomeiwen.com/subject/aexcyctx.html