hdu 1806 rmq】的更多相关文章

找到一个区间内出现最多的数的次数 10 3 //10个数字三次询问 -1 -1 1 1 1 1 3 10 10 10 2 3 1 10 5 10 0 143 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> using namespace std; ; int n,m; ;…
http://acm.hdu.edu.cn/showproblem.php?pid=1806 非常玄妙的rmq问题,这个st算法有点神 #include <iostream> #include <cmath> using namespace std ; ][] ; ],b[] ; void makermq(int n,int *tt) { ;i<n ;i++) dp[i][]=tt[i] ; ;(<<j)<=n ;j++) ;i+(<<j)-&l…
http://acm.hdu.edu.cn/showproblem.php?pid=6305 题目 对于A,B两个序列,任意的l,r,如果RMQ(A,l,r)=RMQ(B,l,r),B序列里的数为[0,1]的实数,B的重量为B的所有元素的和,否则为0.问你B的期望重量是多少. 分析 准备知识:笛卡尔树https://skywt.cn/posts/cartesian-tree/ RMQ-Similar实际上就是A和B的笛卡尔树一样.于是这个题就是笛卡尔树同构的问题,假设A的笛卡尔树的子树大小为sz…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6305 看题解,得知: 0~1内随机取实数,取到两个相同的数的概率是0,所以认为 b 序列是一个排列. 两个序列“RMQ相似”,意为它们的笛卡尔树同构.注意有相同值的时候,后出现的应该位于先出现的的子树中. 一个排列的笛卡尔树与给定笛卡尔树同构的概率是 \( \prod\limits_{i=1}^{n}\frac{1}{siz_i} \) ,其中 \( siz_i \) 表示树上编号为 i 的点的子树大小…
Frequent values Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1146    Accepted Submission(s): 415 Problem Description You are given a sequence of n integers a1 , a2 , ... , an in non-decreasin…
题意: 有n个旅馆,从这n个旅馆中找出若干个旅馆,使得这若干个旅馆满足这样的条件:不能从其它和剩下的旅馆中找到一个价格和距离都小于这个旅馆的旅馆... 解析: 按price 排序,若price相同, 则按距离排序 然后遍历每一个旅馆,在处理当前 旅馆时,二分在price小于当前旅馆price的旅馆中 找到最后一个price小于当前旅馆price的旅馆(因为可能price相同) 然后rmq求距离最小值就可 #include <iostream> #include <cstdio> #…
Frequent values Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1476    Accepted Submission(s): 541 Problem Description You are given a sequence of n integers a1 , a2 , ... , an in non-decreasin…
6305.RMQ Similar Sequence 这个题的意思就是对于A,B两个序列,任意的l,r,如果RMQ(A,l,r)=RMQ(B,l,r),B序列里的数为[0,1]的实数,B的重量为B的所有元素的和,否则为0.问你B的期望重量是多少. dls讲题说是笛卡尔树,笛卡尔树是一种特定的二叉树数据结构,具体的看这篇博客吧:[pushing my way]笛卡尔树 这个题就是笛卡尔树同构的问题,假设A的笛卡尔树的子树大小为sz[u],那么序列B与A同构的概率为,因为B中的数满足均匀分布(因为B中…
区间的价值 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 844    Accepted Submission(s): 398 Problem Description 我们定义“区间的价值”为一段区间的最大值*最小值. 一个区间左端点在L ,右端点在R ,那么该区间的长度为(R−L+1) . 现在聪明的杰西想要知道,对于长度为k 的区…
题目大意: 给你一个数字字符串序列,给你要求删掉的数字个数m,删掉m个数使的剩下的数字字符串的之最小.并输出这个数字: 基本思路; 这题解法有很多,贪心,rmq都可以,这里选择rmq,因为很久没有写rmq的题目了,所以这里先来一发. 至于鸽巢原理,这应该是一个很显而易见的道理,自己去脑补吧. 代码如下: #include<iostream> #include<cstdio> #include<string> #include<cstring> #includ…