首页 > 其他分享 >[蓝桥杯 2022 省 B] 扫雷

[蓝桥杯 2022 省 B] 扫雷

时间:2023-05-31 13:45:56浏览次数:42  
标签:排雷 火箭 蓝桥 109 扫雷 boom 2022 炸雷

[蓝桥杯 2022 省 B] 扫雷

题目描述

小明最近迷上了一款名为《扫雷》的游戏。其中有一个关卡的任务如下,在一个二维平面上放置着 n 个炸雷,第 2023-05-31i 个炸雷 (,,)(xi​,yi​,ri​) 表示在坐标 (,)(xi​,yi​) 处存在一个炸雷,它的爆炸范围是以半径为 ri​ 的一个圆。

为了顺利通过这片土地,需要玩家进行排雷。玩家可以发射 m 个排雷火箭,小明已经规划好了每个排雷火箭的发射方向,第 j 个排雷火箭 (,,)(xj​,yj​,rj​) 表示这个排雷火箭将会在 (,)(xj​,yj​) 处爆炸,它的爆炸范围是以半径为 rj​ 的一个圆,在其爆炸范围内的炸雷会被引爆。同时,当炸雷被引爆时,在其爆炸范围内的炸雷也会被引爆。现在小明想知道他这次共引爆了几颗炸雷?

你可以把炸雷和排雷火箭都视为平面上的一个点。一个点处可以存在多个炸雷和排雷火箭。当炸雷位于爆炸范围的边界上时也会被引爆。

输入格式

输入的第一行包含两个整数 n、m。

接下来的 n 行, 每行三个整数 ,,xi​,yi​,ri​, 表示一个炸雷的信息。

再接下来的 m 行,每行三个整数 ,,xj​,yj​,rj​, 表示一个排雷火箭的信息。

输出格式

输出一个整数表示答案。

输入输出样例

输入 #1
2 1
2 2 4
4 4 2
0 0 5
输出 #1
2

说明/提示

【样例说明】

示例图如下, 排雷火箭 1 覆盖了炸雷 1 , 所以炸雷 1 被排除; 炸雷 1 又覆 盖了炸雷 2 , 所以炸雷 2 也被排除。

【评测用例规模与约定】

对于 40%40% 的评测用例: 0≤,≤109,0≤,≤103,1≤≤100≤x,y≤109,0≤n,m≤103,1≤r≤10.

对于 100%100% 的评测用例: 0≤,≤109,0≤,≤5×104,1≤≤100≤x,y≤109,0≤n,m≤5×104,1≤r≤10.

蓝桥杯 2022 省赛 B 组 H 题。

直接dfs的话,由于数据较弱,可以得60分,想要优化就加一个二分,因为不二分得话,每次dfs都要遍历所有n,我们可以找出这次dfs炸得左端点和右端点,这样就可以大大减少dfs范围

 

#include<bits/stdc++.h>
using namespace std;
const int N=100010,M=1010;
struct node
{
    long long x,y,p;
    long long r;
    bool operator<(const node&w)const
    {
        return x<w.x;
    }
}boom[N];
struct node1
{
    long long x,y,r;
}fire[N];
long long n,m,res,x;
//int vis[M][M][11];
void dfs(long long x,long long y,int r)
{
    // long long Lmid,Rmid,L=0,R=n-1;
    // while(L<=R){
    //     Lmid=(L+R)/2;
    //     if(boom[Lmid].x<x-r)L=Lmid+1;
    //     else R=Lmid-1;
    // }
    // Lmid=L;
    // L=1,R=n;
    // while(L<=R){
    //     Rmid=(L+R)/2;
    //     if(boom[Rmid].x<=x+r)L=Rmid+1;
    //     else R=Rmid-1;
    // }
    //if(vis[x][y][r]==1) return;
    long long st,ed,l1=0,r1=n-1;
    while(l1<=r1)
    {
        st=(l1+r1)/2;
        if(boom[st].x<x-r) l1=st+1;
        else r=st-1;
    }
    st=l1,l1=0,r1=n-1;
    while(l1<=r1)
    {
        ed=(l1+r1)/2;
        if(boom[ed].x<=x+r) l1=ed-1;
        else r1=ed+1; 
    }
    ed=r1;
    for(int i=st;i<=ed;i++) if((x-boom[i].x)*(x-boom[i].x)+(y-boom[i].y)*(y-boom[i].y)<=r*r&&boom[i].p==1)
    {
        res++;
        boom[i].p=0;
        dfs(boom[i].x,boom[i].y,boom[i].r);
        //vis[boom[i].x][boom[i].y][boom[i].r]=1;
    }
    return;
}
int main()
{
    cin>>n>>m;
    for(int i=0;i<n;i++) cin>>boom[i].x>>boom[i].y>>boom[i].r,boom[i].p=1;
    for(int i=0;i<m;i++) cin>>fire[i].x>>fire[i].y>>fire[i].r;
    sort(boom,boom+n);
    for(int i=0;i<m;i++) dfs(fire[i].x,fire[i].y,fire[i].r);
    cout<<res;
    return 0;
}

 

 

 

标签:排雷,火箭,蓝桥,109,扫雷,boom,2022,炸雷
From: https://www.cnblogs.com/o-Sakurajimamai-o/p/17445877.html

相关文章

  • 2022 Kube-OVN开源社区年度报告
    感谢各位社区小伙伴陪伴Kube-OVN又走过了快速发展的一年,随着Kubernetes技术的广泛应用,CNI网络插件的使用率逐步攀升,Kube-OVN社区也在不断成长。让我们一起跟随这篇文章,走进Kube-OVN的2022。  产品功能持续优化 2022年,是Kube-OVN夯实基础、巩固优势的一年,完成了从1.10到1......
  • 初见蓝桥杯
    由于我怕我太菜所以大一没报蓝桥杯比赛(我这个人很自卑呜呜呜)P8637[蓝桥杯2016省B]交换瓶子题目描述有 N 个瓶子,编号 1∼N,放在架子上。比如有 55 个瓶子:2,1,3,5,4要求每次拿起 22 个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:1,2,3,4,5对于这么简......
  • 蓝桥杯 基础练习 特殊回文数(C++)
    资源限制内存限制:512.0MBC/C++时间限制:1.0sJava时间限制:3.0sPython时间限制:5.0s问题描述123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n,编程求所有这样的五位和六位十进制数,满足各位数字之和等于n。输入格式输入一行,包含一个正整......
  • 第十四届蓝桥杯大赛青少组全国总决赛初级组C++C++题解
    第十四届蓝桥杯大赛青少组全国总决赛初级组\(C++\)题解第一题给定一个十进制正整数\(N(1≤N≤10^9)\),请从小到大输出\(1\)~\(N\)之间(含\(1\)和\(N\))所有满足以下要求的数:这个数转换为八进制后是一个回文数;这个数是一个平方数。例如:\(N=20\),在\(1\)~\(20\)之间满足要求......
  • 2022 AMC 10B Problems
     Problem1DefinetobeforallrealnumbersandWhatisthevalueof Problem2Inrhombus,pointliesonsegmentsothat,,and.Whatistheareaof?(Note:Thefigureisnotdrawntoscale.) Problem3Howmanythree-digitpositivei......
  • 转载-吴伟东-2022 年了,重新理解一波设备驱动
    原文链接:https://mp.weixin.qq.com/s/qqxDObNs8vjTFLQueX1J-A 哈喽,我是老吴。非常怀念写文章的感觉。昨晚复习了一些Linux驱动的基础知识,给大家分享一下吧。先说结论:多年来,我接触到的Linux驱动教程大多都是从0编写,这样对初学者而言最大的好处,就是可以接触到比较多......
  • 【专题】2022中国新能源汽车发展趋势白皮书报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=31861新能源汽车市场从政策推动到市场驱动的转变过程中,行业也在经过了一个萌芽期和初期的探索期之后,步入了一个迅速发展的时期。此外,在科技力量的加持下,品牌、车型、区域等细分领域都在持续地进行着调整,行业格局已经初具规模,在持续的创新中,产业已经......
  • 【蓝桥杯集训·每日一题】AcWing 4496. 吃水果
    写在前面本人CSDN博客主页:这里一、题目1、原题链接4496.吃水果2、题目描述n个小朋友站成一排,等着吃水果。一共有m种水果,每种水果的数量都足够多。现在,要给每个小朋友都发一个水果,要求:在所有小朋友都拿到水果后,恰好有k个小朋友拿到的水果和其左边相邻小朋友拿到的水果不同(最左......
  • 第十二届蓝桥杯c++b组国赛题解(还在持续更新中...)
    试题A:带宽解题思路:由于小蓝家的网络带宽是200Mbps,即200Mb/s,所以一秒钟可以下载200Mb的内容,根据1B=8b的换算规则,所以200Mb=200/8MB=25MB。所以小蓝家的网络理论上每秒钟最多可以从网上下载25MB的内容。代码实现:#include<iostream>#include<algorithm>usingnamespacestd......
  • 即构科技入选「2022年中国元宇宙产业生态图谱」
    2022年是全球元宇宙产业高速发展且动荡的一年,在经历了初期的挫折和弯路后,布局元宇宙的企业逐渐找到了在产业链中所扮演的角色。 2022年末,36氪发布《2022年元宇宙产业生态图谱》,该图谱面向XR生态、大内容生态、区块链与数字衍生经济、虚拟人、元宇宙虚拟空间、元宇宙数字孪生六......