正题


题目大意

两个序列不降a,ba,ba,b,每次可以修改或询问[l1,r1,l2,r2][l_1,r_1,l_2,r_2][l1​,r1​,l2​,r2​]要求输出将序列aaa的l1∼r1l_1\sim r_1l1​∼r1​和bbb的l2∼r2l_2\sim r_2l2​∼r2​部分合起来然后求中位数。


解题思路

我们考虑分治,我们取出两个区间l1+k2−1∼r1l_1+\frac{k}{2}-1\sim r_1l1​+2k​−1∼r1​和l2+k2−1∼r2l_2+\frac{k}{2}-1\sim r2l2​+2k​−1∼r2,然后我们可以判断

若amid1&lt;bmid2a_{mid_1}&lt;b_{mid_2}amid1​​<bmid2​​,我们就有mid1+1∼r1mid_1+1\sim r_1mid1​+1∼r1​和mid2∼r2mid_2\sim r_2mid2​∼r2​都比l1∼mid1l_1 \sim mid_1l1​∼mid1​大,然后因为这些区间的大小大于等于kkk,所以l1∼mid1l_1\sim mid_1l1​∼mid1​是不包含答案的,所以我们把这个区间去掉。

然后就是这样不停减少就过了


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=510000;
int n,m,a[N],b[N];
int calc(int *a,int w,int l,int r)
{return (lower_bound(a+l,a+1+r,w)-a)-l;}
int solve(int l1,int r1,int l2,int r2,int k)
{if(r2<l2) return a[l1+k-1];if(r1<l1) return b[l2+k-1];if(k==1) return min(a[l1],b[l2]);int m1=min(l1+k/2-1,r1),m2=min(l2+k/2-1,r2);if(a[m1]<=b[m2]) return solve(m1+1,r1,l2,r2,k-(m1-l1+1));else return solve(l1,r1,m2+1,r2,k-(m2-l2+1));
}
int main()
{freopen("median.in","r",stdin);freopen("median.out","w",stdout);scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=n;i++)scanf("%d",&b[i]);while(m--){int opt,x,y,l,r;scanf("%d%d%d%d",&opt,&x,&y,&l);if(opt==1){if(!x) a[y]=l;else b[y]=l; }else {scanf("%d",&r);printf("%d\n",solve(x,y,l,r,((r-l+1)+(y-x+1))/2+1));}}
}

jzoj6308-中间值【分治】相关推荐

  1. Luogu4755 Beautiful Pair 最值分治、主席树

    传送门 整天做一些模板题感觉药丸 设\(val_i\)表示第\(i\)个位置的值 看到区间最大值考虑最值分治.对于当前的区间\([l,r]\),找到区间最大值\(mid\),递归\([l,mid-1] ...

  2. 欢乐纪中A组赛【2019.8.18】

    前言 有一个暴力写挂了QVQQVQQVQ 成绩 RankRankRank PersonPersonPerson ScoreScoreScore AAA BBB CCC 111111 (J−3)LRZ( ...

  3. 【IOI2018】会议【笛卡尔树】【dp】【线段树】

    题意:长度为nnn的序列,qqq次询问,每次给定一个区间,钦定区间中的一个位置xxx,使得区间所有点 与xxx之间的最大值(含端点) 之和 最小,输出最小值. n,q≤7.5×105n,q\leq7. ...

  4. yxy小蒟蒻的201112总结

    2020.11.12 周四 今天题挺简单的 A B C 都是送分题 我 C 题考试的时候瞄了一眼 就战略性放弃了 这里解释一下 真真真不是故意不打的 那是因为之前 bobbobbob 给我说过这个题 ...

  5. 【CodeForces】Codeforces Global Round 9

    比赛链接 点击打开链接 官方题解 点击打开链接 Problem A. Sign Flipping 将奇数位的数取非正值,偶数位的数取非负值即可. 单组数据时间复杂度 O ( N ) O(N) O(N) ...

  6. PKUWC2020 (旅)游记

    体验营员没人权系列 草 话说这不还是2019年么... 先占坑 本来以为冬令营没戏 回去上了一个月文化课 最后一周才知道进了 W C WC WC 匆匆停了一周课就滚来旅游了 听说是 l i n u x ...

  7. 牛客练习赛84:牛客推荐系统开发之标签重复度(点分治+动态开点权值线段树)

    题意: 给你一棵树,问树上所有两点路径上的(最大值最小值乘积)之和. 题解: 很明显的一个点分治问题,然后就是个二维偏序问题了(虽然我也不知道啥是二维偏序). 点分治不难,重点是点分治内cal函数如何 ...

  8. 【BZOJ3295】动态逆序对,CDQ分治/BIT套权值线段树

    传送门 思路: 用来练习cdq的题目 断断续续纠结了2天 因为loli一直在考试 最后莫名乱搞了一发就A了? 实际上是考虑每一次修改对答案的贡献,即位置在1~x-1且大于x的数以及位置在x+1~n且小 ...

  9. 递归分治问题之找出两个有序序列的中间值

    问题描述: You are interested in analyzing some hard-to-obtain data from two separate databases. Each dat ...

  10. 递归求最值(分治递归)

    输入n,再输入n个数,输出n个数中的最小值和最大值. 分治与递归! 代码: #include<iostream>using namespace std; void minmax(int * ...

最新文章

  1. 你了解VLSM多少(1)
  2. 数据仓库、数据集市、数据湖,这些大数据名词你知道多少?
  3. PHP MySQL基础知识
  4. Run-time error “70“:Permission denied
  5. 挑战iOS!小米全新OS发布:22款机型首发
  6. 第10章 随机山水画(《Python趣味创意编程》教学视频)
  7. mysql 主命令总结
  8. HibernateTemplate.save()与HibernateTemplate.update() 无法写入数据库的问题
  9. SQL Server 中死锁产生的原因及解决办法
  10. 智能供应链预测的应用
  11. 隋政军---将木屋烧烤打造成中国领先的烧烤品牌
  12. Excel导入导出之easypoi用法
  13. CSS: 对background: url(“~assets/img/common/collect.svg“) 0 0/14px 14px 的理解
  14. Zynga公布2020年第二季度财务业绩
  15. 黑客帝国角色 之 先知的另类解读
  16. 美的空气净化器H32评测:美观、实用以及更多
  17. 互联网、因特网、万维网的区别
  18. sha1加密实现(java)
  19. 2020年外贸软件排名和市场占有率
  20. 手机app开发制作流程是怎样的?

热门文章

  1. c语言得到txt文件的长度,我利用C语言实现SHA-256算法,需要从一个txt文件中读出数据并把...
  2. linux系统故障实验,Linux常见系统故障排除
  3. java流的序列化_Java中的对象流和序列化介绍
  4. http referer 验证防御方法_渗透测试 跨站攻击防御与安全检测手法剖析
  5. 东北大学计算机 大一物理考试题,东北大学大学物理期末考题及答案Word版
  6. 读取oracle bfile字段,ORACLE中BFILE字段的使用研究_oracle
  7. java当中递归打印目录树
  8. qt 实现html 编辑器,基于QT的HTML编辑器的设计与实现.doc
  9. [Spring5]Spring框架概述
  10. 洛谷 P1958 上学路线-dfs