题目链接

题目

题目描述

Curling is a sport in which players slide stones on a sheet of ice toward a target area. The team with the nearest stone to the center of the target area wins the game.

Two teams, Red and Blue, are competing on the number axis. After the game there are \((n+m)\) stones remaining on the axis, \(n\) of them for the Red team and the other \(m\) of them for the Blue. The iii-th stone of the Red team is positioned at \(a_i\) and the \(i\)-th stone of the Blue team is positioned at \(b_i\).

Let \(c\) be the position of the center of the target area. From the description above we know that if there exists some \(i\) such that \(1 \le i \le n\) and for all \(1 \le j \le m\) we have\(|c - a_i| < |c - b_j|\) then Red wins the game. What's more, Red is declared to win \(p\) points if the number of \(i\) satisfying the constraint is exactly \(p\).

Given the positions of the stones for team Red and Blue, your task is to determine the position \(c\) of the center of the target area so that Red wins the game and scores as much as possible. Note that \(c\) can be any real number, not necessarily an integer.

输入描述

There are multiple test cases. The first line of the input contains an integer \(T\) indicating the number of test cases. For each test case:

The first line contains two integers nnn and mmm (\(1 \le n, m \le 10^5\)) indicating the number of stones for Red and the number of stones for Blue.

The second line contains nnn integers \(a_1, a_2, \cdots, a_n\) (\(1 \le a_i \le 10^9\)) indicating the positions of the stones for Red.

The third line contains mmm integers \(b_1, b_2, \cdots, b_m\) (\(1 \le b_i \le 10^9\)) indicating the positions of the stones for Blue.

It's guaranteed that neither the sum of nnn nor the sum of \(m\) will exceed \(5 \times 10^5\) .

输出描述

For each test case output one line. If there exists some \(c\) so that Red wins and scores as much as possible, output one integer indicating the maximum possible score of Red (NOT \(c\)). Otherwise output "Impossible" (without quotes) instead.

示例1

输入

3
2 2
2 3
1 4
6 5
2 5 3 7 1 7
3 4 3 1 10
1 1
7
7

输出

2
3
Impossible

备注

For the first sample test case we can assign \(c = 2.5\) so that the stones at position 2 and 3 for Red will score.

For the second sample test case we can assign \(c = 7\) so that the stones at position 5 and 7 for Red will score.

题解

知识点:STL,模拟。

选择一个点作为目标,如果存在红色石头比所有蓝色石头都严格接近目标,则红方胜利。进一步,满足比所有蓝色石头都严格接近目标的红色石头的数量是红方最后得分。

显然,红色石头会连成一段区间,中间不能有蓝色石头(包括端点),目标可以选在他们中间,使得这段红色石头都包括其中,并不含蓝色石头,最终得分就是连续红色石头的个数。地图上有很多蓝色石头分割了许多红色石头的区间,所以首先用一个 \(map\) 将坐标映射到红色石头数量,再将蓝色石头坐标的红色石头数量设为 \(0\) ,这样就有了所有石头的坐标,不为 \(0\) 的就是红色石头数量。遍历一遍,计算每个区间的红色石头个数,取其中最大值即可。

时间复杂度 \(O((n+m) \log (n+m))\)

空间复杂度 \(O(n+m)\)

代码

#include <bits/stdc++.h>
#define ll long long using namespace std; bool solve() {
int n, m;
cin >> n >> m;
map<int, int> mp;
for (int i = 0, tmp;i < n;i++) {
cin >> tmp;
mp[tmp]++;
}
for (int i = 0, tmp;i < m;i++) {
cin >> tmp;
mp[tmp] = 0;
}
int ans = 0, sum = 0;
for (auto [i, j] : mp) {
if (j) sum += j;
else sum = 0;
ans = max(ans, sum);
}
if (ans) cout << ans << '\n';
else return false;
return true;
} int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int t = 1;
cin >> t;
while (t--) {
if (!solve()) cout << "Impossible" << '\n';
}
return 0;
}

随机推荐

  1. spring启动流程 (6完结) springmvc启动流程

    SpringMVC的启动入口在SpringServletContainerInitializer类,它是ServletContainerInitializer实现类(Servlet3.0新特性).在实 ...

  2. Windows 下 Outlook 点击关闭最小化和开机自动运行

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  3. AXI Channel

    AXI Channel axi与ahb不同就是分为不同的channel write address channel - 表明一个transaction基本的属性,包含本次传输的地址\类型\大小(多少字 ...

  4. [转帖]oracle查询表变化量

    根据变化量,可确定表的繁忙度,以及作为判断可能数据增长的对象. select obj.owner, obj.object_name, to_char(sn.BEGIN_INTERVAL_TIME,'y ...

  5. [转帖]Intel“革命性”X86s架构,带来哪些颠覆及影响?

    https://www.eet-china.com/mp/a221822.html 英特尔发布了一份新的白皮书(Intel X86-S扩展架构规格),计划简化其处理器指令集架构(ISA).英特尔提供了 ...

  6. [转帖]Native Memory Tracking 详解(3):追踪区域分析(二)

    https://www.modb.pro/db/539804 上篇文章 Native Memory Tracking 详解(2):追踪区域分析(一) 中,分享了NMT追踪区域的部分内存类型--Java ...

  7. 【构造,图论,建模】Loj3629「2021 集训队互测」序列

    Problem Link 有一个长为 \(n\) 的未知序列,给定 \(m\) 个限制,每个限制形如给定 \(i,j,k,x\),要求 \(a_i,a_j,a_k\) 的中位数为 \(x\).构造一个 ...

  8. 小记录 单选框的注意点 html中字符串拼接 el-upload手动上传 表格跳转 v-for动态添加背景色 控制label标签于文本框之间的间距

    在element-ui中 单选框的v-model的值最好是一个字符串 否者可能不能够进行数据回填哈 单选框 的类型必须是字符串类型哈 在elemnet-ui中 如果你想从A页面拿到B页面中的值 可以有 ...

  9. 【分享代码片段】terraform中,如何从刚刚创建的 deployment 中获得所有容器的名字和 ip

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 不好意思,刚刚才开始用 terraform,或许是更好的办 ...

  10. Go 循环之for循环,仅此一种

    Go 循环之for循环,仅此一种 目录 Go 循环之for循环,仅此一种 一.for 循环介绍 二.for 循环结构 2.1 基本语法结构 2.2 省略初始值 2.3 省略初始语句和结束语句 2.4 ...