【题目链接】
http://acm.hdu.edu.cn/showproblem.php?pid=6319

题目意思

给定一个长度为n的序列,给出前k个值,后面根据公式自己算。现在问你每个区间长度为m的子序列最大值异或上i和最大值变化次数异或上i的求和。

解题思路

用单调队列来维护,只要把序列倒过来维护递减序列。这样队列中元素个数就是count个数(倒的是递减正的就是递增所以每两个相邻都会让count加一,加上最开始0正好是队列个数),队头就是最大值。
注意:求a[i]和最终值可能过大。

代码部分


#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <queue>
#include <string>
#include <map>
#include <math.h>
#include <set>
using namespace std;
#define LL long long
#define inf 0x3f3f3f3
//const int mod = 1e9+7;
const int N = 1e7+7;
int n,m,k,q,p,r,mod;
int a[N];
int qu[N];   ///单调栈
LL ans,sum;
void  geti()
{int head,rear;  head = rear =0;for (int i = n; i >= 1; i--){while (rear > head && a[qu[rear-1]] <= a[i])  ///存储单调递减数列   rear--; qu[rear++] = i;if (i > n-m+1) continue;while (qu[head] > i+m-1) head++;  ///移到区间内 //printf("%d %d %d %d\n",rear,head,rear-head,a[qu[head]]);ans += (rear-head)^i;sum += a[qu[head]]^i;}
}
int main()
{int t;scanf("%d",&t);while (t--){sum = ans =0;scanf("%d %d %d %d %d %d %d",&n,&m,&k,&p,&q,&r,&mod);for (int i = 1; i <= k; i++)scanf("%d",&a[i]);for (int i = k+1; i <= n; i++)a[i] = ((LL)p*a[i-1]%mod+(LL)q*i%mod+r%mod)%mod;geti();printf("%lld %lld\n",sum,ans);}return 0;
}

HDU 6319 Problem A. Ascending Rating (单调队列)相关推荐

  1. HDU 4122 Alice's mooncake shop 单调队列优化dp

    Alice's mooncake shop Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem ...

  2. HDU 6444 Neko's loop(单调队列)

    Neko has a loop of size nn.  The loop has a happy value aiai on the i−th(0≤i≤n−1)i−th(0≤i≤n−1) grid. ...

  3. HDU 6319(单调队列)

    传送门 题面: Problem A. Ascending Rating Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/ ...

  4. hdu 3706 Second My Problem First 单调队列

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3706 Second My Problem First Time Limit: 12000/4000 M ...

  5. POJ 2823-Sliding Window单调队列解题报告

    链接:http://poj.org/problem?id=2823 利用单调队列的出队入队,维护区间的最值,保证队列单调递增或单调递减,要维护单调递增队列,当一个数字插入的时候,从队尾往前找到第一个比 ...

  6. 入门经典_Chap08_题解总结:极角扫描法 滑动窗口 单调队列 单调栈

    总结  本章主要关注一个重要的问题 – 单调队列和单调栈的使用  同时还有一些其他的问题,如扫描法,递归的思想, 构造, 分治, 二分等 知识点 单调队列 和 单调栈 题目 UVA - 1606 Am ...

  7. Ascending Rating【HDU 6319】【单调队列】【O(N)也TLE了的原因!震惊】

    题目链接 一道单调队列的题--菜鸡如是说到(30发过这题!),竟是一个毫不起眼的小地方! 这道题的题意就是:我们先给出K长的数组,然后剩下的(N-K)的长的剩余数组部分,我们得自己补完,就是用到了它给 ...

  8. Ascending Rating(单调队列)

    题目描述 Before the start of contest, there are n ICPC contestants waiting in a long queue. They are lab ...

  9. HDU 6194 string string string :后缀数组+单调队列 | 后缀自动机

    题意:给出一个字符串,求出出现了恰好k次的子串的个数. 题解:恰好k次 = 至少k次 - 至少k+1次.答案转化为求至少出现k次的子串个数统计.构造好后缀数组以及很重要的Height数组之后.用一个k ...

  10. Hdu 2430 Beans (数据结构_单调队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2430 题目大意:有n坨豌豆,每坨都有w[i]个,现在要从中选择连续的若干坨,然后用一个能装p个豌豆的背 ...

最新文章

  1. 基于ATMEGA8的Arduino Nano(UNO)开发板
  2. seo日常工作表_专业SEOer的日常工作状态
  3. python雷达和柱形图_Python Pygal常见数据图(折线图、柱状图、饼图、点图、仪表图和雷达图)详解...
  4. (已解决)登录火狐浏览器账号后没有同步数据--博主的奇妙寻号之旅
  5. java流与文件——内存映射文件
  6. 软件工程学习笔记《目录》
  7. 手机压缩包删除有什么后果?
  8. Q103:磨边的物体(Beveled Objects)
  9. sql怎么注销当前登录状态_4种方法教你获取Oracle数据库当前会话/进程的session id...
  10. Postgresql_最新版11.2源码编译安装
  11. 对流式计算模型的理解
  12. Hamming(汉明)窗的原理介绍及实例解析
  13. Java面试题十二:Java内存模型,h5移动端开发面试题
  14. B2B,B2C,C2C,C2B,B2G
  15. oracle数据透明加密,使用ORACLE 透明数据加密 TDE
  16. Injective Protocol官方文档翻译(四) -通证经济(Token Economics)
  17. python scrapy 简单教程_python之scrapy入门教程
  18. 不可不学的摄影技巧之三(摄影小窍门)
  19. Cognos Analytics教程之为什么我喜欢 Cognos Analytics:IBM Cognos Analytics 的 15 个特性
  20. 【让我们再聊聊浏览器资源加载优化】

热门文章

  1. express文件上传中间件Multer详解
  2. 求出字符串中大写字母,小写字母和数字的个数
  3. 国际象棋八皇后问题----解决办法
  4. 新手如果写一个软件,应该是怎么一个流程?
  5. HTTP协议报文头部结构和Web相关工具
  6. AICamera of Caffe2
  7. 初中计算机卡片的制作教案,【我的拼音卡片教案】制作拼音卡片
  8. html实现自动图片轮播,图片轮播的实现(html__js)
  9. 14种鼻型图解_十种鼻型分类图详细解析
  10. 富爸爸穷爸爸--读书笔记