链接: 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 ; ll a[M],p,q,r,mod; ll n,m,k; ll lis[…
#include <stdio.h> #include <iostream> #include <cstdlib> #include <cmath> #include <string> #include <cstring> #include <algorithm> #include <stack> #include <queue> #include <set> #include <…
要求一个区间内的最大值和每次数过去最大值更新的次数,然后求每次的这个值异或 i 的总和. 这个序列一共有n个数,前k个直接给出来,从k+1到n个数用公式计算出来. 因为要最大值,所以就要用到单调队列,然后从后往前扫一遍然后每次维护递减的单调队列. 先把从n-m+1以后开始的数放进单调队列,这时候先不操作,然后剩下的数就是要异或相加的数,然后每次的队首元素就是这个区间内的最大值,这个队列里的元素个数,其实就是更新到最大值的逆过程,也就是最大值需要更新的次数. #include<map> #inc…
2018 Multi-University Training Contest 3 6319.Problem A. Ascending Rating 题意就是给你长度为k的数列,如果数列长度k<n,就利用一个构造数列的方法构造数列使数列长度为n. 然后求定长区间为m的数列中最大值是几,最大值是第几次更新maxnum得到的,得到所有结果之后,用一个求和的公式将结果输出来,具体题意自己翻译. 滑窗问题,单调队列可以解决.关于滑窗问题和单调队列,具体的自行百度. 对于这个题,倒着遍历数列才能既找到最大值…
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6319 Problem A. Ascending Rating Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 5943    Accepted Submission(s): 2004 Problem Description Before…
/* HDU 6051 - If the starlight never fade [ 原根,欧拉函数 ] | 2017 Multi-University Training Contest 2 题意: 给定 m,p, p 是素数 设 f(i) 是 满足 (x+y)^i ≡ x^i mod p 的 (x,y) 对数 且 1 ≤ x ≤ p-1 , 1 ≤ y ≤ m 求 ∑[1≤i≤p-1] i*f(i) 限制: m ≤ p-1, 2 ≤ p ≤ 1e9 分析: 设 g 为 p 的原根,则x,y可…
http://acm.hdu.edu.cn/showproblem.php?pid=6319 从后往前更新,维护一个递减单调栈(队列) 最近很多题都是单调栈... #define _CRT_SECURE_NO_WARNINGS #include<cstdio> #include<algorithm> #include<queue> #include<iostream> //#include<deque> using namespace std;…
今天比赛的时候做的一个坑题.深坑啊. 题目意思是给你一个有n个数的数字序列.要你判断对于这个序列是都满足任意一个子序列都至少含有一个只出现一次的数字. 看完题目后没什么思路,一直以为要用线段树,每次删除一个点,然后更新,后来发现wa了,算法有问题. 后来殷犇讲了一种水过去的方法,听完后瞬间就水过了. 其实我们可以这样去做,对于数组中的每个数,我们建立一个指针指向这个数字下一次在数组中出现的位置. 然后核心的水的地方来了,如果我们已知一个区间中存在某一个数字只出现一次,假设区间为[l,r],这个只…
Practice Link J. Different Integers 题意: 给出\(n\)个数,每次询问\((l_i, r_i)\),表示\(a_1, \cdots, a_i, a_j, \cdots, a_n\)中有多少个不同的数. 思路: 先分别离线求出\(a_1, \cdots a_i\)以及\(a_j, \cdots, a_n\)中有多少个不同的数. 再考虑有多少个数既在\([1, i]\)中也在\([j, n]\)中,再离线做一次. 考虑一个数第一次出现的时候,那么这个数下一次出现…
目录 Contest Info Solutions A. run D. monrey G. transform H. travel I. car J. farm Contest Info Practice Link Solved A B C D E F G H I J K 6/10 Ø . . Ø . . Ø Ø Ø Ø . O 在比赛中通过 Ø 赛后通过 ! 尝试了但是失败了 . 没有尝试 Solutions A. run 题意: 白云每次可以移动\(1\)米或者\(k\)米,询问移动的米数在…