Median
来源:互联网 发布:js设置div文本内容 编辑:程序博客网 时间:2024/04/26 11:10
Median
.
.
题目挺水的。注意给定的序列是有序的,所以其实只有两种情况,要么给定的两段序列无关,要么出现重叠,这两个情况分开弄一下就好了。
.
.
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>using namespace std;const int maxn = 100010;long long a[maxn];int l, r, l1, r1, l2, r2, mergel, merger, sum, n, m;long long find1(int t) { if (l1+t-1 <= r1) return a[l1+t-1]; t = t-(r1-l1+1); return a[l2+t-1];}long long find2(int t) { l = l1; r = max(r1, r2); mergel = l2; merger = min(r1, r2); if (l+t-1 < mergel) return a[l+t-1]; t = t-(mergel-l); if (mergel+(t-1)/2 <= merger) return a[mergel+(t-1)/2]; t = t-(merger-mergel+1)*2; return a[merger+t];}int main() { int tt; scanf("%d", &tt); while (tt--) { scanf("%d %d", &n, &m); for (int i = 1; i <= n; i++) scanf("%lld", &a[i]); while (m--) { scanf("%d %d", &l1, &r1); scanf("%d %d", &l2, &r2); if (l1 > l2) { swap(l1, l2); swap(r1, r2); } sum = (r1-l1+1)+(r2-l2+1); if (r1 < l2) { double ans = find1((sum+1)/2)+find1((sum+2)/2); printf("%.1lf\n", ans/2.0); } else { double ans = find2((sum+1)/2)+find2((sum+2)/2); printf("%.1lf\n", ans/2.0); } } }}
0 0
- Median
- Median
- Median
- median
- Median
- Median
- Median
- median
- median
- Median
- Median Filter
- M Median
- Find Median
- ZOJ3612 Median
- Median Filter
- zju2011 Median
- 1029. Median
- PAT_1029: Median
- Nougat多窗口支持
- Web服务器的工作原理
- 对于某时区的mock的例子
- Scala Hello World
- java和c、c++中数组的区别
- Median
- Html01
- Linux线程编程 - 线程属性控制
- 数据存储—— list用法示例详解
- spring+mysql乱码问题
- PHP数组
- linux硬件信息查看
- ExtJs 中Grid根据列表中某列的值,修改整行数据的背景色 ExtJS版本为2.3
- windows+ubuntu多系统启动盘