19_08_14-19_02_21校内训练 补题
时间:2019-08-21
本文章向大家介绍19_08_14-19_02_21校内训练 补题,主要包括19_08_14-19_02_21校内训练 补题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.给两个非严格递增的序列,每次分别从两个数组中抽出一个区间并合并,求排序后第k小。单log。
分治即可。
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=5E5+5; 4 int n,m,a[maxn],b[maxn]; 5 inline int read() 6 { 7 char ch=getchar(); 8 while(!isdigit(ch)) 9 ch=getchar(); 10 int sum=ch-'0'; 11 ch=getchar(); 12 while(isdigit(ch)) 13 { 14 sum=sum*10+ch-'0'; 15 ch=getchar(); 16 } 17 return sum; 18 } 19 void write(int x) 20 { 21 if(x>=10) 22 write(x/10); 23 putchar('0'+x%10); 24 } 25 inline void writen(int x) 26 { 27 write(x); 28 putchar('\n'); 29 } 30 int ask(int*A,int*B,int lenA,int lenB,int k) 31 { 32 if(lenA>lenB) 33 return ask(B,A,lenB,lenA,k); 34 if(lenA==0) 35 return B[k]; 36 if(k==1) 37 return min(A[1],B[1]); 38 int x=min(lenA,k/2); 39 int y=k-x; 40 if(A[x]<B[y]) 41 return ask(A+x,B,lenA-x,lenB,y); 42 else 43 return ask(A,B+y,lenA,lenB-y,x); 44 } 45 inline int query(int L1,int R1,int L2,int R2) 46 { 47 int len=R1-L1+R2-L2+2; 48 return ask(a+L1-1,b+L2-1,R1-L1+1,R2-L2+1,len/2+1); 49 } 50 int main() 51 { 52 ios::sync_with_stdio(false); 53 n=read(),m=read(); 54 for(int i=1;i<=n;++i) 55 a[i]=read(); 56 for(int i=1;i<=n;++i) 57 b[i]=read(); 58 while(m--) 59 { 60 int opt=read(); 61 if(opt == 2) 62 { 63 int L1=read(),R1=read(); 64 int L2=read(),R2=read(); 65 writen(query(L1,R1,L2,R2)); 66 } 67 else 68 { 69 int p=read(),pos=read(),x=read(); 70 if(p==0) 71 a[pos]=x; 72 else 73 b[pos]=x; 74 } 75 } 76 return 0; 77 }
原文地址:https://www.cnblogs.com/GreenDuck/p/11389500.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- springboot使用spring-cloud-starter-alibaba-sentinel导致响应变成xml格式
- 内网安全攻防之内网渗透测试基础
- CMake脚本中如何修改XCode工程属性?
- 数值微分|有限差分法的误差分析
- Odyssey
- 【MySQL】之join算法详解
- 性能最佳实践:查询模式和分析
- Node 如何在 Controller 层进行数据校验
- FlutterDojo设计之道——状态管理之路(二)
- EyouCms前台GetShell漏洞复现
- CentOS7系统使用rpm方式安装MySQL5.7
- Mysql的主从复制
- 初学者指南:什么是算法?11行伪代码给你讲明白
- Shiro安全框架入门学习
- Shiro集成Spring