单调栈hdu6325 Problem G. Interstellar Travel

Posted suut

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单调栈hdu6325 Problem G. Interstellar Travel相关的知识,希望对你有一定的参考价值。

从后往前更新,维护一个递减单调栈(队列)

最近很多题都是单调栈。。。

 

#define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<algorithm>
#include<queue>
#include<iostream>
//#include<deque>
using namespace std;
const int maxn = 1e7 + 5;
int n, m, k, P, Q, R, MOD,T;
int a[maxn];
#define rep(i,t,n)  for(int i =(t);i<=(n);++i)
#define per(i,n,t)  for(int i =(n);i>=(t);--i)
#define mmm(a,b) memset(a,b,sizeof(a))

int main() {
        scanf("%d", &T);
        while (T--) {
            deque<int> que;
            long long A = 0, B = 0,cnt=0,mx=-1;

            scanf("%d%d%d%d%d%d%d", &n, &m, &k, &P, &Q, &R, &MOD);
            rep(i,1,k)scanf("%d", &a[i]);
            rep(i,k+1,n)a[i] = (1LL * P*a[i - 1] + 1LL * Q*i + R) % MOD;
            per(i, n,1) {
                while (!que.empty() && que.back() <= a[i])que.pop_back();
                que.push_back(a[i]);
                if (i <= n - m + 1) {
                    if (a[i + m ] == que.front())que.pop_front();
                    A += i ^ que.front();
                    B += i ^ (que.size());                                
                }
            }
            
            printf("%lld %lld
", A, B);
    }
        cin >> n;
}

 

以上是关于单调栈hdu6325 Problem G. Interstellar Travel的主要内容,如果未能解决你的问题,请参考以下文章

HDU-Largest Rectangle in a Histogram-1506 单调栈

RQNOJ 429 词链:单调栈

P5788 模板单调栈

hdu 1506 单调栈问题

hdu 3410 单调栈

HDU 6957 Maximal submatrix(悬线法 || 优先队列 || 单调栈 )