首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
所有长度为奇数的区间的中位数
2024-11-05
【CQOI2008】中位数
题不难,但是思路有意思,这个是我自己想出来的OvO 原题: 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. n<=100000 刚看这道题的时候看n滋瓷nlogn的复杂度,又是维护区间关系的,觉得应该要用数据结构 然后开始想数据结构,思考中位数的特殊性,题目中限定子序列的长度为奇数,b是一个长度为奇数的序列的中位数就说明在这个序列中比b大的数和比b小的数相等 子序列中的东西有多少个,这个可以用前缀搞 然后发现让前缀中
POJ 2388 Who's in the Middle(水~奇数个数排序求中位数)
题目链接:http://poj.org/problem?id=2388 题目大意: 奇数个数排序求中位数 解题思路:看代码吧! AC Code: #include<stdio.h> #include<algorithm> using namespace std; int main() { int n; while(scanf("%d",&n)!=EOF) { ]; ; i<n; i++) scanf("%d",&na[i
[51nod1685]第k大区间
Description 定义一个长度为奇数的区间的值为其所包含的的元素的中位数. 现给出$n$个数,求将所有长度为奇数的区间的值排序后,第$k$大的值为多少. Input 第一行两个数$n$和$k$.第二行$n$个数$a_i$. Output 一个数表示答案. Sample Input 4 3 3 1 2 4 Sample Output 2 HINT $1\;\leq\;n\;\leq\;10^5,k\;\leq\;$奇数区间的数量,$0\;\leq\;a_i<2^{31}$ Solution
51 NOD 1685 第K大区间2 二分+BIT
题目描述: 定义一个长度为奇数的区间的值为其所包含的的元素的中位数. 现给出n个数,求将所有长度为奇数的区间的值排序后,第K大的值为多少. 样例解释: [l,r]表示区间的值 [1]:3 [2]:1 [3]:2 [4]:4 [1,3]:2 [2,4]:2 第三大是2 输入: 第一行两个数n和k(1<=n<=100000,k<=奇数区间的数量) 第二行n个数,0<=每个数<2^31 输出: 一个数表示答案. 题解: 二分答案t,统计中位数大于等于t的区间有多少个. 设a[i]为
51nod 第K大区间2(二分+树状数组)
题目链接: 第K大区间2 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 160 定义一个长度为奇数的区间的值为其所包含的的元素的中位数.中位数_百度百科 现给出n个数,求将所有长度为奇数的区间的值排序后,第K大的值为多少. 样例解释: [l,r]表示区间的值[1]:3[2]:1[3]:2[4]:4[1,3]:2[2,4]:2 第三大是2 Input 第一行两个数n和k(1<=n<=100000,k<=奇数区间的数量) 第二行n个数,0<=每个数<2^31 O
luogu P1627 [CQOI2009]中位数
传送门 要求有多少个长度为奇数的区间满足某个数为区间中位数 这样的区间,大于中位数的数个数 等于 小于中位数的数个数 用类似于前缀和的方法,设\(X_i\)为\(i\)和数\(b\)形成的区间内,大于\(b\)的数个数减去小于\(b\)的数个数的值,每次从前面那个位置转移过来,加上这个位置的贡献救星 最后用两个桶统计\(b\)左边和右边的\(X_i\)为某个值的个数,分别记为\(l_i\ r_i\),然后答案为\(\sum_{i,j}l_ir_j\ (i+j==0)\) 注意负下标处理和两个初值
【51nod 1685】 第K大区间2
题目描述: 定义一个长度为奇数的区间的值为其所包含的的元素的中位数.现给出n个数,求将所有长度为奇数的区间的值排序后,第K大的值为多少. 样例解释: [l,r]表示区间的值 [1]:3 [2]:1 [3]:2 [4]:4 [1,3]:2 [2,4]:2 第三大是2 Input 第一行两个数n和k(1<=n<=100000,k<=奇数区间的数量) 第二行n个数,0<=每个数<2^31 Output 一个数表示答案. Input示例 4 3 3 1 2 4 Output示例 2
51nod 1685 第K大区间2
定义一个长度为奇数的区间的值为其所包含的的元素的中位数.中位数_百度百科 现给出n个数,求将所有长度为奇数的区间的值排序后,第K大的值为多少. 样例解释: [l,r]表示区间的值[1]:3[2]:1[3]:2[4]:4[1,3]:2[2,4]:2 第三大是2 Input 第一行两个数n和k(1<=n<=100000,k<=奇数区间的数量) 第二行n个数,0<=每个数<2^31 Output 一个数表示答案. Input示例 4 3 3 1 2 4 Output示例 2 题目大
noip模拟赛 第k大区间
[问题描述] 定义一个长度为奇数的区间的值为其所包含的的元素的中位数. 现给出n个数,求将所有长度为奇数的区间的值排序后,第K大的值为多少. [输入] 输入文件名为kth.in. 第一行两个数n和k 第二行,n个数.(0<=每个数<231) [输出] 输出文件名为kth.out. 一个数表示答案. [输入输出样例] kth.in kth.out 4 3 3 1 2 4 2 [样例解释] [l,r]表示区间l~r的值 [1,1]:3 [2,2]:1 [3,3]:2 [4,4]:4 [1,3]:2
2017.10.7 国庆清北 D7T2 第k大区间
题目描述 定义一个长度为奇数的区间的值为其所包含的的元素的中位数. 现给出n个数,求将所有长度为奇数的区间的值排序后,第K大的值为多少. 输入输出格式 输入格式: 输入文件名为kth.in. 第一行两个数n和k 第二行,n个数.(0<=每个数<2^31) 输出格式: 一个数表示答案 输入输出样例 输入样例#1: 4 3 3 1 2 4 [样例解释] [l,r]表示区间l~r的值 [1,1]:3 [2,2]:1 [3,3]:2 [4,4]:4 [1,3]:2 [2,4]:2 输出样例#1: 2
51nod百度之星2016练习赛
今天看了看51nod发现有这样一个练习赛,就做了做.因为实力太弱想不出E题,各位神犇勿D. (5.26UPD:E题想粗来了) A 区间交 不难发现若干线段[li,ri]的交就是[max(li),min(ri)],那么我们考虑枚举min(ri),将ri>=min(ri)的区间按顺序加入,这时我们显然应该选第k小的li来更新答案.这些操作用个堆就可以轻松维护了. 时间复杂度为O(NlogN). #include<cstdio> #include<cctype> #include&
2017.10.7北京清北综合强化班DAY7
1.计数 (count.cpp/c/pas) 时间限制:1s 内存限制:256MB [问题描述] 给出m个数a[1],a[2],…,a[m] 求1~n中有多少数不是a[1],a[2],…,a[m]的倍数. [输入] 输入文件名为count.in. 第一行,包含两个整数:n,m 第二行,包含m个数,表示a[1],a[2],…,a[m] [输出] 输出文件名为count.out. 输出一行,包含1个整数,表示答案 [输入输出样例] count.in count.out 10 2 2 3 3 [数据说
10.1综合强化刷题 Day7
noip提高组模拟赛
[]APC001
题目质量都好高啊... A:求一个是$X$的倍数但不是$Y$的倍数的数,无解输出$-1$ 无解就是$Y|X$,否则输出$X$即可 B:给定$a_{1\cdots n},b_{1\cdots n}$,求是否能通过($a_i+=2,b_j+=1$)这样的操作使$a,b$相等 如果$\sum a_i\geq\sum b_i$那么无解,否则操作次数为$\sum\limits b_i-\sum a_i$ 因为操作可以异步进行,所以先把$+2$用完看能否使得使得所有$a_i\geq b_i$,这一步至少要操
Luogu 3466 [POI2008]KLO-Building blocks
BZOJ 1112. 题意相当于在一个长度为$k$的区间内选择一个数$s$使$\sum_{i = 1}^{k}\left | a_i - s \right |$最小. 很显然是中位数. 然后只要写一个能查询长度为$k$的区间的中位数,以及小于和大于这个中位数的总和和个数的数据结构即可. 线段树平衡树对顶堆随便维护. 我选择权值线段树. 时间复杂度$O(nlogn)$. Luogu上还需要输出方案. Code: #include <cstdio> #include <cstring>
CSP-S全国模拟赛第四场 【nan?】
本来想抢三题的 rk1 ?[无耻 最后发现 T2 好像还是慢了些,只搞了个 rk2 子段与子段 第一题随便分析一下,发现一段区间中某个元素的贡献次数就是 \((x+1)·(y+1)\) x 是他左边的元素个数, y 是右边(当然指的是询问区间内) 由于异或的性质,一个元素最终贡献次数膜 2 后结果一样 那么我们发现对于长度为偶数的区间答案必然是 0 proof: 不难证明每个元素的贡献次数都是偶数次的 对于长度为奇数的区间,我们发现答案是以区间左端点开始,右端点结束的步长为 2 的序列的异或和
[CSP-S模拟测试]:Seat(概率DP+数学)
题目描述 有$n+2$个座位等距地排成一排,从左到右编号为$0$至$n+1$.最开始时$0$号以及$n+1$号座位上已经坐了一个小$G$,接下来会有$n$个小$G$依次找一个空座位坐下.由于小$G$们坐得太近就容易互相搏弈,每个小$G$会找一个当前离最近的小$G$距离最远的座位坐下.如果有多个备选的座位,这个小$G$会等概率选择其中一个.给出$n$,求第$i$个坐下的小$G$坐在$j$号座位的概率,对$P$取模.具体来说,如果答案化为最简分数可以表示为$\frac{a}{b}$,你需要输出$a\
[nowCoder] 两个长度相同有序数组的中位数
给定两个有序数组arr1和arr2,两个数组长度都为N,求两个数组中所有数的上中位数.例如:arr1 = {1,2,3,4};arr2 = {3,4,5,6};一共8个数则上中位数是第4个数,所以返回3. arr1 = {0,1,2};arr2 = {3,4,5};一共6个数则上中位数是第3个数,所以返回2. 要求:时间复杂度O(logN) 假设两个数组长度为偶数 1 2 3 4 1‘ 2’ 3‘ 4’ 若2 == 2‘ ,则直接返回: 若2 > 2', 说明 2 至少排第4, 所以3,4
求中位数为K的区间的数目
给定一个长为 $n$ 的序列和常数 $k$,求此序列的中位数为 $k$ 的区间的数量.一个长为 $m$ 的序列的中位数定义为将此序列从小到大排序后第 $\lceil m / 2 \rceil$ 个数. 解法 直接考虑中位数等于 $k$ 的区间是比较困难的,我们转而考虑中位数大于等于 $k$ 的区间个数.按题目中所采用中位数定义,一个序列的中位数大于等于 $k$ 当且仅当序列中大于等于 $k$ 的元素的数目超过序列长度的一半. 对于某个固定的 $k$,将序列中大于等于 $k$ 的元素替换成 $1$
LeetCode 4 Median of Two Sorted Arrays 查找中位数,排除法,问题拓展 难度:1
思路:设现在可用区间在nums1是[s1,t1),nums2:[s2,t2) 1.当一个数组可用区间为0的时候,由于另一个数组是已经排过序的,所以直接可得 当要取的是最小值或最大值时,也直接可得 2.明显两个数组总长度为偶数的时候需要取最中间两个元素/2.0,长度为奇数时,只需要求最中间那个.所以只需要分别求出最多两个元素,分别是 (findKthElement(0,t1,0,t2,(t1 + t2)/2) 和 findKthElement(0,t1,0,t2,(t1 + t2)/2 + 1)
热门专题
热敏电阻温度计算方法
win7系统日志 事件ID大全
nifi报错invalid number
cmd编码设置utf8编写bat
dedecms 文章tag内链
yafu本地安装使用
setup vpn 插件
eclipse导入测试的类库
找不到依赖和maven版本有关的
shell生成随机数在某一范围
Cipher解密乱码
独显a卡一会运行一会不运行
laravel admin 自定义表单验证
小程序有cookie吗
使用yml文件连接aws的ecr
c语言 结构体 冒号
docker service update更新不成功
paddle模型部署到服务器上
wx.redirectTo 无效
golang内存不释放一直增长