题目名称 4236. 引爆炸弹
输入输出 bomb.in/out
难度等级 ★★
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatar李金泽 于2025-12-18加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:1, 提交:3, 通过率:33.33%
Gravatar李金泽 100 0.163 s 5.34 MiB C++
Gravatar李金泽 0 0.184 s 5.34 MiB C++
Gravatar李金泽 0 11.006 s 3.31 MiB C++
关于 引爆炸弹 的近10条评论(全部评论)
本体虽然可以用两遍单调栈过,但希望大家能用图论解法
Gravatar李金泽
2025-12-18 20:44 1楼

4236. 引爆炸弹

★★   输入文件:bomb.in   输出文件:bomb.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

现有 n 个炸弹,第 i 个炸弹的位置为 $a_i$,爆炸半径为 $r_i$。保证对于任意$1≤i<n$,都有$a_i≤a_{i+1}$。当某个炸弹被引爆时,会触发连锁反应:所有位置落在区间 $[a_i - r_i, a_i + r_i]$ 内的炸弹都会被引爆;而被引爆的炸弹又会以相同规则触发新的连锁反应,直至没有更多炸弹可被引爆。请你找出最优引爆目标(即选择某一个炸弹作为初始引爆点),使得最终被引爆的炸弹总数最多,并输出该最大数量。

【输入格式】

第一行输入一个整数 n,表示炸弹的总数;  

第二行输入 n 个整数,依次表示每个炸弹的位置 a[1], a[2], ..., a[n];  

第三行输入 n 个整数,依次表示每个炸弹的爆炸半径 r[1], r[2], ..., r[n]。

【输出格式】

输出一个整数,表示选择最优初始炸弹引爆时,最多能被引爆的炸弹总数。

【样例输入】

5  

1 3 6 10 11 

3 1 2 4 0

【样例输出】

3

【样例说明】

引爆炸弹$4$可以引爆$[3,5]$的炸弹  可以证明不存在更优的引爆炸弹的方案

【数据规模与约定】

对于 30% 数据,$n≤100$   

对于 50% 数据,$n≤5*10^3$    

对于 100% 数据,$1≤n≤10^5$,$0≤|a_i|$,$r_i≤10^9$