HDU 6319 Problem A. Ascending Rating (单调队列)
【题目链接】
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 (单调队列)相关推荐
- 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 ...
- 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. ...
- HDU 6319(单调队列)
传送门 题面: Problem A. Ascending Rating Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 524288/ ...
- hdu 3706 Second My Problem First 单调队列
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3706 Second My Problem First Time Limit: 12000/4000 M ...
- POJ 2823-Sliding Window单调队列解题报告
链接:http://poj.org/problem?id=2823 利用单调队列的出队入队,维护区间的最值,保证队列单调递增或单调递减,要维护单调递增队列,当一个数字插入的时候,从队尾往前找到第一个比 ...
- 入门经典_Chap08_题解总结:极角扫描法 滑动窗口 单调队列 单调栈
总结 本章主要关注一个重要的问题 – 单调队列和单调栈的使用 同时还有一些其他的问题,如扫描法,递归的思想, 构造, 分治, 二分等 知识点 单调队列 和 单调栈 题目 UVA - 1606 Am ...
- Ascending Rating【HDU 6319】【单调队列】【O(N)也TLE了的原因!震惊】
题目链接 一道单调队列的题--菜鸡如是说到(30发过这题!),竟是一个毫不起眼的小地方! 这道题的题意就是:我们先给出K长的数组,然后剩下的(N-K)的长的剩余数组部分,我们得自己补完,就是用到了它给 ...
- Ascending Rating(单调队列)
题目描述 Before the start of contest, there are n ICPC contestants waiting in a long queue. They are lab ...
- HDU 6194 string string string :后缀数组+单调队列 | 后缀自动机
题意:给出一个字符串,求出出现了恰好k次的子串的个数. 题解:恰好k次 = 至少k次 - 至少k+1次.答案转化为求至少出现k次的子串个数统计.构造好后缀数组以及很重要的Height数组之后.用一个k ...
- Hdu 2430 Beans (数据结构_单调队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2430 题目大意:有n坨豌豆,每坨都有w[i]个,现在要从中选择连续的若干坨,然后用一个能装p个豌豆的背 ...
最新文章
- 基于ATMEGA8的Arduino Nano(UNO)开发板
- seo日常工作表_专业SEOer的日常工作状态
- python雷达和柱形图_Python Pygal常见数据图(折线图、柱状图、饼图、点图、仪表图和雷达图)详解...
- (已解决)登录火狐浏览器账号后没有同步数据--博主的奇妙寻号之旅
- java流与文件——内存映射文件
- 软件工程学习笔记《目录》
- 手机压缩包删除有什么后果?
- Q103:磨边的物体(Beveled Objects)
- sql怎么注销当前登录状态_4种方法教你获取Oracle数据库当前会话/进程的session id...
- Postgresql_最新版11.2源码编译安装
- 对流式计算模型的理解
- Hamming(汉明)窗的原理介绍及实例解析
- Java面试题十二:Java内存模型,h5移动端开发面试题
- B2B,B2C,C2C,C2B,B2G
- oracle数据透明加密,使用ORACLE 透明数据加密 TDE
- Injective Protocol官方文档翻译(四) -通证经济(Token Economics)
- python scrapy 简单教程_python之scrapy入门教程
- 不可不学的摄影技巧之三(摄影小窍门)
- Cognos Analytics教程之为什么我喜欢 Cognos Analytics:IBM Cognos Analytics 的 15 个特性
- 【让我们再聊聊浏览器资源加载优化】