Hoj 3149 The median number problem2
来源:互联网 发布:日本出云号航母知乎 编辑:程序博客网 时间:2024/05/16 10:14
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=3149
分治法求两个等长有序数组的中位数。
使用分治法复杂度可以从O(n)降到O(logn)。
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <map>#include <queue>#include <algorithm>using namespace std;#define Maxn 300005int median(int *a,int *b,int length){ if(length == 1) return a[0] < b[0] ? a[0] : b[0]; int mid = (length - 1)/2; if(a[mid] == b[mid]) return a[mid]; if(a[mid] < b[mid]) { return median(&a[length - mid -1],b,mid+1); } else { return median(a,&b[length - mid -1],mid+1); }}int a[Maxn],b[Maxn];int main(){#ifndef ONLINE_JUDGE freopen("in.txt","r",stdin);#endif int t; int n; int A,B,C,D; int q; int len; scanf(" %d",&t); while(t--) { scanf(" %d",&n); for(int i=0; i<n; i++) scanf(" %d",&a[i]); for(int i=0; i<n; i++) scanf(" %d",&b[i]); scanf(" %d",&q); for(int i=0; i<q; i++) { scanf(" %d %d %d %d",&A,&B,&C,&D); len = B-A+1; int ans = median(a+A,b+C,len); printf("%d\n",ans); } } return 0;}
- Hoj 3149 The median number problem2
- Problem2
- HOJ 2275 Number Sequence
- HOJ MaoLaoDa Number
- HOJ 2065 Fibonacci Number
- HOJ 1296 Big Number
- Hoj 1058 Number Triangles
- hoj 2275 Number Sequence
- HOJ 1058 Number Triangles
- hoj 2275 Number sequence
- Hoj 2275 Number Sequence
- hoj 1058 Number Triangles
- Hoj 13326 Biggest Number
- HOJ 2275 Number sequence
- HOJ The Colored Cubes
- HOJ 3074 The Position
- HOJ 2785 The Game
- Hoj 1140 The Game
- spring学习笔记:Spring IOC容器的通俗认识
- Qt输出调试日晒日志到文件
- 大众点评实习生面试题(1)
- android.mk
- SQL提高查询效率(1)
- Hoj 3149 The median number problem2
- Ubuntu 12.04常用的快捷键
- Android获取SD卡上的APK文件,并且判断是否安装过、是否可以更新到新版本的工具类
- HDU2222-tire,AC自动机
- Unity3D 给NGUI自带的控件添加新属性
- 第二课 oracle中的用户,角色,权限
- Surrounded Regions
- Windows程序设计_Chap03_窗口与消息_学习笔记
- (整理)BT5 R3安装中文语言包(解决半中文半英文)