链接:

http://acm.hdu.edu.cn/showproblem.php?pid=6319

思路:

单调队列倒着维护,队列里面剩下的值的数量就是这一段区间的count值,如样例第一个区间:3 2 2 1 5 7

单调队列倒着维护遍历一遍变成了:7 5 3

长度为3,队首为最大值7

实现代码:

#include<cstdio>
using namespace std;
#define ll long long
const int M = 1e7+;
ll a[M],p,q,r,mod;
ll n,m,k;
ll lis[M],head,tail,t;
int main()
{
scanf("%lld",&t);
while(t--){ scanf("%lld%lld%lld%lld%lld%lld%lld",&n,&m,&k,&p,&q,&r,&mod);
for(int i = ;i <= k;i ++)
scanf("%lld",&a[i]);
for(int i = k + ;i <= n;i ++)
a[i] = ((p * a[i - ]) % mod + q * i % mod + r) % mod;
head = tail = ;
for(int i = n;i >= n-m+;i --){
while(head < tail&&a[lis[tail-]] <= a[i]) -- tail;
lis[tail++] = i;
}
ll A = ,B = ;
A += a[lis[head]] ^ (n-m+);
B += (tail - head) ^ (n - m + );
for(int i = n-m;i >= ;i --){
while(lis[head] > i + m - &&head < tail) ++head;
while(head < tail&&a[lis[tail - ]] <= a[i]) --tail;
lis[tail++] = i;
A += a[lis[head]] ^ i;
B += (tail - head) ^ i;
}
printf("%lld %lld\n",A,B);
}
return ;
}

hdu 6319 Problem A. Ascending Rating (2018 Multi-University Training Contest 3 A)的更多相关文章

  1. hdu 6319 Problem A. Ascending Rating (2018 Multi-University Training Contest 3)

    #include <stdio.h> #include <iostream> #include <cstdlib> #include <cmath> # ...

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

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

  3. HDU 6319.Problem A. Ascending Rating-经典滑窗问题求最大值以及COUNT-单调队列 (2018 Multi-University Training Contest 3 1001)

    2018 Multi-University Training Contest 3 6319.Problem A. Ascending Rating 题意就是给你长度为k的数列,如果数列长度k<n ...

  4. 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 ...

  5. HDU 6051 - If the starlight never fade | 2017 Multi-University Training Contest 2

    /* HDU 6051 - If the starlight never fade [ 原根,欧拉函数 ] | 2017 Multi-University Training Contest 2 题意: ...

  6. 【单调栈】hdu 6319 杭电多校Problem A. Ascending Rating

    http://acm.hdu.edu.cn/showproblem.php?pid=6319 从后往前更新,维护一个递减单调栈(队列) 最近很多题都是单调栈... #define _CRT_SECUR ...

  7. Problem D - Non-boring sequences——Contest1004 - National Day Training Contest -- Day3

    今天比赛的时候做的一个坑题.深坑啊. 题目意思是给你一个有n个数的数字序列.要你判断对于这个序列是都满足任意一个子序列都至少含有一个只出现一次的数字. 看完题目后没什么思路,一直以为要用线段树,每次删 ...

  8. 2018 Nowcoder Multi-University Training Contest 1

    Practice Link J. Different Integers 题意: 给出\(n\)个数,每次询问\((l_i, r_i)\),表示\(a_1, \cdots, a_i, a_j, \cdo ...

  9. 2018 Nowcoder Multi-University Training Contest 2

    目录 Contest Info Solutions A. run D. monrey G. transform H. travel I. car J. farm Contest Info Practi ...

随机推荐

  1. GIT 安装、创建版本库

    在Linux上安装Git 首先,你可以试着输入git,看看系统有没有安装Git: $ git The program 'git' is currently not installed. You can ...

  2. linux编程之信号量

    一.概念 linux信号量: 允许多个线程同时进入临界区,可以用于进程间的同步. 和互斥锁(mutex)的区别: 互斥锁只允许一个线程进入临界区. 所在头文件: semaphore.h 二.主要函数 ...

  3. CF1038E Maximum Matching 搜索/区间DP

    题目传送门:http://codeforces.com/problemset/problem/1038/E 题意:给出$N$个方块,每个方块有左右两种颜色$a,b$(可以翻转使左右两种颜色交换)和一个 ...

  4. el取bean 对象属性规则

    1,去map  根据map key 2,取bean中属性 根据get方法,getaaa() getAaa() ${xxx.aaa}可以取到此方法. ${xxx.Aaa}报错

  5. 同一个解决方案或有依赖关系的两个项目引用同名但不同版本的DLL

    问题描述 我们最近在使用Redis作Session的集中化,中间碰到了一个如下问题:我们有一些项目比较老,引用了NewtonJson的4.0.3.0版本的DLL,但是Redis提供的C#集成DLL引用 ...

  6. electron 开发实时加载

    第一个方式 cnpm install electron-reload --save-dev cnpm install electron-prebuilt --save-dev require('ele ...

  7. 运行supervisorctl reload报错解决方法

    在进行守护进程时运行supervisorctl reload出现“error: <class 'socket.error'>, [Errno 2] No such file or dire ...

  8. java垃圾回收诡异现象

    在知乎上看到一篇提问,于是做了个实验帮助他解答,这里整理成一篇文章分享一下. 先看代码如下代码: /** * Created on 2017/12/16. * * -verbose:gc -XX:+U ...

  9. week3个人作业

    一.必应词典的bug 必应词典占用资源过多,作为后台软件,必应词典的内存占用是其他的四五倍 适应能力弱,经常与其他软件冲突,兼容性差 二.分析 根据我的分析,团队人数6人左右,计算机大学毕业生,并有专 ...

  10. Linux 第七周实验 及总结

    姬梦馨 原创作品 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第七周 Linux内核如何装载和启动一 ...