题目描述

Before the start of contest, there are n ICPC contestants waiting in a long queue. They are labeled by 1 to n from left to right. It can be easily found that the i-th contestant's QodeForces rating is ai.

Little Q, the coach of Quailty Normal University, is bored to just watch them waiting in the queue. He starts to compare the rating of the contestants. He will pick a continous interval with length m, say [l,l+m−1], and then inspect each contestant from left to right. Initially, he will write down two numbers maxrating=0 and count=0. Everytime he meets a contestant k with strictly higher rating than maxrating, he will change maxrating to ak and count to count+1.

Little T is also a coach waiting for the contest. He knows Little Q is not good at counting, so he is wondering what are the correct final value of maxrating and count. Please write a program to figure out the answer.

输入

The first line of the input contains an integer T(1≤T≤2000), denoting the number of test cases.

In each test case, there are 7 integers n,m,k,p,q,r,MOD(1≤m,k≤n≤107,5≤p,q,r,MOD≤109) in the first line, denoting the number of contestants, the length of interval, and the parameters k,p,q,r,MOD.

In the next line, there are k integers a1,a2,...,ak(0≤ai≤109), denoting the rating of the first k contestants.

To reduce the large input, we will use the following generator. The numbers p,q,r and MOD are given initially. The values ai(k<i≤n) are then produced as follows :

It is guaranteed that ∑n≤7×107 and ∑k≤2×106.

输出

Since the output file may be very large, let's denote maxratingi and counti as the result of interval [i,i+m−1].

For each test case, you need to print a single line containing two integers A and B, where :

Note that ``⊕'' denotes binary XOR operation.

题目描述

在比赛开始之前,有很多ICPC参赛者排起了长队。它们从左到右标记为1到n。很容易发现第i位参赛者的QodeForces评级为ai。

Quailty师范大学的教练小Q很难看他们排队等候。他开始比较参赛者的评分。他会选择一个长度为m的连续间隔,比如[l,l + m-1],然后从左到右检查每个参赛者。最初,他将记下两个数字maxrating = 0和count = 0。每当他遇到一个比最大值更高等级的参赛者k时,他会将最大值更改为ak并计数到+1。

小 T也是一位等待比赛的教练。他知道小 Q不擅长计算,所以他想知道最大值和计数的正确最终值是多少。请写一个程序来找出答案。

输入

输入的第一行包含整数T(1≤T≤2000),表示测试用例的数量。

在每个测试用例中,第一行有7个整数n,m,k,p,q,r,MOD(1≤m,k≤n≤107,5≤p,q,r,MOD≤109),表示参赛者的数量,间隔的长度,以及参数k,p,q,r,MOD。

在下一行中,有k个整数a1,a2,...,ak(0≤ai≤109),表示前k个参赛者的等级。

为减少大输入,我们将使用以下生成器。最初给出数字p,q,r和MOD。然后如下产生值ai(k <i≤n):

保证Σn≤7×107且Σk≤2×106。

输出

由于输出文件可能非常大,因此我们将maxratingi和counti表示为区间[i,i + m-1]的结果。

对于每个测试用例,您需要打印包含两个整数A和B的单行,其中:

注意,“⊕”表示二进制XOR运算。

样例输入

1
10 6 10 5 5 5 5
3 2 2 1 5 7 6 8 2 9

样例输出

46 11

大致题意(这题需要语文水平:

给你一个长度为n的序列(输入只有前k个元素,k+1至n要根据他给的公式算出)。然后给你一个m,让你求序列中所有长度为m的区间内的最大值和最长上升子序列([1,m],[2,m+1],[3,m+2].......),更换次数为你在这个区间内从左到右遍历寻找最大值的最长上升子序列的长度。

思路:

首先这题的数据范围及最大值,更新次数等关键字眼不难让我们想到单调队列。

但这题正序遍历貌似不太理解,就倒着来进行单调队列,和滑动窗口极其相似。

最大值直接输出对首,最长上升子序列的长度就是单调队列的大小了。

代码:

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set> #define inf 0x7fffffff
#define rg register int using namespace std; int t,n,m,k,l,r,mod;
long long su,pi,p,q,z;
int a[10000001];
int s[10000001];
int f[10000001]; inline int qr(){
char ch;
while((ch=getchar())<'0'||ch>'9');
int res=ch^48;
while((ch=getchar())>='0'&&ch<='9')
res=res*10+(ch^48);
return res;
} int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
t=qr();
while(t--){ l=1,r=1;
for(rg i=0;i<=10;++i)
s[i]=-1;
n=qr(),m=qr(),k=qr();
p=qr(),q=qr(),z=qr();
mod=qr(); su=0,pi=0;
for(rg i=1;i<=k;++i)
a[i]=qr();
for(rg i=k+1;i<=n;++i)
a[i]=(p*a[i-1]+q*i+z)%mod;
for(rg i=n;i>=1;--i){
while(s[r]<=a[i]&&r>=l)r--;
s[++r]=a[i];f[r]=i;
while(f[l]>=i+m)l++;
if(i+m<=n+1)
su+=s[l]^i,pi+=(r-l+1)^i;
}printf("%lld %lld\n",su,pi);
}
return 0;
}

Ascending Rating(单调队列)的更多相关文章

  1. hdu6319 Ascending Rating /// 单调队列

    题目大意: 给定n m k,p q r mod, 给出序列的前k项 之后的按公式 a[i]=(p×a[i-1]+q×i+r)%mod 递推 求序列中每个长度为m的连续区间的 该区间最大值与第一位的位置 ...

  2. HDU 6319 Ascending Rating (单调双端队列)

    题意:给定一个序列a[1..n],对于每个长度为m的连续子区间,求出区间的最大值和从左往右扫描该区间最大值的变化次数. 分析:先O(n)处理出整个序列的值.求出每个长度为m的连续区间中的最大值可以用单 ...

  3. HDU 2018 Multi-University Training Contest 3 Problem A. Ascending Rating 【单调队列优化】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6319 Problem A. Ascending Rating Time Limit: 10000/500 ...

  4. HDU 6319 Problem A. Ascending Rating(单调队列)

    要求一个区间内的最大值和每次数过去最大值更新的次数,然后求每次的这个值异或 i 的总和. 这个序列一共有n个数,前k个直接给出来,从k+1到n个数用公式计算出来. 因为要最大值,所以就要用到单调队列, ...

  5. 2018年多校第三场第一题 A. Ascending Rating hdu6319

    比赛地址:http://acm.hdu.edu.cn/contests/contest_show.php?cid=804 题目编号:第一题 A. Ascending Rating  hdu6319 题 ...

  6. hdu多校第3场A.Ascending Rating

    Problem A. Ascending Rating Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Sub ...

  7. BestCoder Round #89 B题---Fxx and game(单调队列)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5945     问题描述 输入描述 输出描述 输入样例 输出样例 题意:中文题,不再赘述: 思路:  B ...

  8. 单调队列 && 斜率优化dp 专题

    首先得讲一下单调队列,顾名思义,单调队列就是队列中的每个元素具有单调性,如果是单调递增队列,那么每个元素都是单调递增的,反正,亦然. 那么如何对单调队列进行操作呢? 是这样的:对于单调队列而言,队首和 ...

  9. FZU 1914 单调队列

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=1914 题意: 给出一个数列,如果它的前i(1<=i<=n)项和都是正的,那么这个数列是正的,问这个 ...

随机推荐

  1. Daily Scrum - 11/13

    时间:3:00pm - 3:30pm 今天小组例会主要是任烁分享他对WP源码的code review,通过分析与讨论我们了解了背单词模块的主要类(主要是词和单词本),取词方式(调用数据库接口),算法( ...

  2. SQLSERVER 查看操作系统内存

    1. 通过系统试图查看内存信息 SELECT total_physical_memory_kb / AS [物理内存(MB)] , available_physical_memory_kb / AS ...

  3. 利用git从github上拉取项目

    (一)准备工作 (1)安装git,下载地址是git官网:https://git-scm.com/点击打开链接 (二)拉取项目的步骤 1.新建文件夹,最好为英文名project 2.进入文件夹,空白处右 ...

  4. ANSI C 常见宏的使用

    1. __VA_ARGS__: ...  表示可变参数列表,__VA_ARGS__在预处理中会被可变参数列表替代 2. __FILE__:正在编译文件的文件路径 3. __LINE__:正在编译文件的 ...

  5. IDEA 调试技巧

    转载:http://blog.csdn.net/victor_cindy1/article/details/52336983 1.这里以一个web工程为例,点击图中按钮开始运行web工程. 2.设置断 ...

  6. MT【167】反复放缩

    已知数列$\{a_n\}$满足:$a_1=1,a_{n+1}=a_n+\dfrac{a_n^2}{n(n+1)}$1)证明:对任意$n\in N^+,a_n<5$2)证明:不存在$M\le4$, ...

  7. Java 动态代理模式浅析

    目录 Java代理设计模式 - 静态代理 静态代理的优点 静态代理的缺点 Java中的动态代理 - 调用处理器 主要笔记: 动态代理类的限制 代理设计模式的UML图: 我将首先介绍Java中的各种代理 ...

  8. openstack遇到的错误

    错误1:运行python脚本,提示401错误(未授权) 解决方法:我的是因为版本问题,注意变量名称等 学新版本吧........

  9. 20145215《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145215<网络对抗>shellcode注入&Return-to-libc攻击深入 Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻 ...

  10. Python微信红包算法

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...