当前位置: 首页 > news >正文

蓝桥杯算法模板

模拟散列表

拉链法

import java.io.*;
import java.util.*;
public class a1 {static int n;static int N=100003;static int[] h=new int[N];static int[] e=new int[N];static int[] ne=new int[N];
static int idx;
static void insert(int x){int k=(x%N+N)%N;e[idx]=x;ne[idx]=h[k];h[k]=idx++;
}
static boolean find(int x){int k=(x%N+N)%N;for(int i=h[k];i!=-1;i=ne[i]){if(e[i]==x)return true;}return false;
}public static void main(String[] args) {Scanner sc=new Scanner(new BufferedInputStream(System.in));int n= sc.nextInt();Arrays.fill(h,-1);while(n-->0){String op= sc.next();int x=sc.nextInt();if(op.equals("I"))insert(x);else {if(find(x)) System.out.println("Yes");else System.out.println("No");}}}
}

开放寻址法

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;
import java.io.*;
import java.math.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;
import java.io.*;
import java.math.*;
public class a2 {
static int N=200000+3;
static int nu=0x3f3f3f3f;static int h[]=new int[N];static int n;static int find(int x){int t=(x%N+N)%N;while(h[t]!=nu&&h[t]!=x){t++;if(t==N)t=0;}return t;}public static void main(String[] args) {Scanner sc=new Scanner(System.in);Arrays.fill(h,nu);int  n=sc.nextInt();while (n-->0){String op= sc.next();int x= sc.nextInt();if(op.equals("I"))h[find(x)]=x;else {if(h[find(x)]==nu) System.out.println("No");
else System.out.println("Yes");}}}}

广度优先搜索

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;class BFS {static int N = 110, row, col;static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static char[][] a = new char[N][N];static int[][] dir = new int[][]{{-1, 0}, {0, 1}, {1, 0}, {0, -1}};public static void main(String[] args) throws Exception {int m = Integer.valueOf(br.readLine());while (m-- > 0) {int n = Integer.valueOf(br.readLine());row = col = n;for (int i = 0; i < n; i++) {String s = br.readLine();for (int j = 0; j < n; j++) {a[i][j] = s.charAt(j);}}String[] ss = br.readLine().split(" ");int x1 = Integer.valueOf(ss[0]);int y1 = Integer.valueOf(ss[1]);int x2 = Integer.valueOf(ss[2]);int y2 = Integer.valueOf(ss[3]);if (bfs(x1, y1, x2, y2)) System.out.println("YES");else System.out.println("NO");}}public static boolean bfs(int x1, int y1, int x2, int y2) {Queue<int[]> q = new LinkedList<>();if (a[x1][y1] == '#' || a[x2][y2] == '#') return false;if (x1 == x2 && y1 == y2) return true;q.offer(new int[]{x1, y1});boolean[][] st = new boolean[row][col];st[x1][y1] = true;while (!q.isEmpty()) {int[] poll = q.poll();for (int i = 0; i < 4; i++) {int nx = dir[i][0] + poll[0];int ny = dir[i][1] + poll[1];if (nx < 0 || nx >= row || ny < 0 || ny >= col) continue;if (st[nx][ny] || a[nx][ny] == '#') continue;st[nx][ny] = true;if (nx == x2 && ny == y2) return true;q.offer(new int[]{nx, ny});}}return false;}}

深度优先搜索

import java.io.*;
import java.util.*;
class DFS{static int N=110,row,col;static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));static char[][] a=new char[N][N];static int[][] dir=new int[][]{{-1,0},{0,1},{1,0},{0,-1}};public static void main(String[] args)throws Exception {int m=Integer.valueOf(br.readLine());while(m-->0){int n=Integer.valueOf(br.readLine());row=col=n;for(int i=0;i<n;i++){String s=br.readLine();for(int j=0;j<n;j++){a[i][j]=s.charAt(j);}}String[] ss=br.readLine().split(" ");int x1=Integer.valueOf(ss[0]);int y1=Integer.valueOf(ss[1]);int x2=Integer.valueOf(ss[2]);int y2=Integer.valueOf(ss[3]);boolean[][] st=new boolean[n][n];if(a[x1][y1]=='#'||a[x2][y2]=='#') System.out.println("NO");else if (x1==x2&&y1==y2) {System.out.println("YES");}else if(dfs(x1,y1,x2,y2,st)){System.out.println("YES");}else System.out.println("NO");}}
public static boolean dfs(int x1,int y1,int x2,int y2,boolean[][] st){for(int i=0;i<4;i++){int nx=x1+dir[i][0];int ny=y1+dir[i][1];if(nx<0||nx>=row||ny<0||ny>=col)continue;if(st[nx][ny]||a[nx][ny]=='#')continue;st[nx][ny]=true;if(nx==x2&&ny==y2)return true;if(dfs(nx,ny,x2,y2,st))return true;}return false;
}}

并查集

import java.util.Arrays;
import java.util.Scanner;
public class bcj {static int inf=0x3f3f3f3f;static int maxn=10051005;static int m,n,k,ans;static int[] p=new int[maxn];static Scanner sc=new Scanner(System.in);
static boolean[] vis=new boolean[maxn];public static void init(){Arrays.fill(vis,false);for (int i = 1; i <= n * m; i++) {p[i]=i;}}public static int find(int x){if(x!=p[x]){return p[x]=find(p[x]);}return x;}public static void join(int x, int y){int xx=find(x);int yy=find(y);if(xx!=yy)p[yy]=xx;}public static void main(String[] args) {m= sc.nextInt();
n= sc.nextInt();
k= sc.nextInt();
init();while (k-->0){int x,y;x= sc.nextInt();y= sc.nextInt();join(x,y);
}
for(int i=1;i<=m*n;i++){vis[find(i)]=true;}for (int i = 1; i <= n * m; i++) {if(vis[i])ans++;}System.out.println(ans);}}

扫雷

小明最近迷上了一款名为《扫雷》的游戏。

其中有一个关卡的任务如下:

在一个二维平面上放置着 nn 个炸雷,第 ii 个炸雷 (xi,yi,ri)(xi,yi,ri) 表示在坐标 (xi,yi)(xi,yi) 处存在一个炸雷,它的爆炸范围是以半径为 riri 的一个圆。

为了顺利通过这片土地,需要玩家进行排雷。

玩家可以发射 mm 个排雷火箭,小明已经规划好了每个排雷火箭的发射方向,第 jj 个排雷火箭 (xj,yj,rj)(xj,yj,rj) 表示这个排雷火箭将会在 (xj,yj)(xj,yj) 处爆炸,它的爆炸范围是以半径为 rjrj 的一个圆,在其爆炸范围内的炸雷会被引爆。

同时,当炸雷被引爆时,在其爆炸范围内的炸雷也会被引爆。

现在小明想知道他这次共引爆了几颗炸雷?

你可以把炸雷和排雷火箭都视为平面上的一个点。

一个点处可以存在多个炸雷和排雷火箭。

当炸雷位于爆炸范围的边界上时也会被引爆。

输入格式

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

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

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

输出格式

输出一个整数表示答案。

数据范围

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

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

输入样例:

2 1
2 2 4
4 4 2
0 0 5

输出样例:

2

样例解释

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

难度:中等

时/空限制:1s / 256MB

总通过数:984

总尝试数:4743

来源:第十三届蓝桥杯省赛C++B组

算法标签

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;class Main {static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static final int N = 50010, M = 99997;static Circle[] cirs = new Circle[N];static long[] h = new long[M];static int[] id = new int[M];static boolean[] st = new boolean[M];static int n, m;static class Circle {public int x;public int y;public int r;public Circle(int x, int y, int r) {this.x = x;this.y = y;this.r = r;}}public static void dfs(int x, int y, int r) {st[find(x, y)] = true;for (int i = x - r; i <= x + r; i++) {for (int j = y - r; j <= y + r; j++) {if (sqr(i - x) + sqr(j - y) <= sqr(r)) {int t = find(i, j);if (id[t] != 0 && !st[t]) {dfs(i, j, cirs[id[t]].r);}}}}}public static long getkey(int x, int y) {return (long) x * 10000001 + y;}public static int find(int x, int y) {long key = getkey(x, y);int t = (int) ((key % M + M) % M);while (h[t] != -1 && h[t] != key) {if (++t == M) t = 0;}return t;}public static long sqr(int n) {return  n * n;}public static void main(String[] args) throws Exception {String[] ss = br.readLine().split(" ");n = Integer.parseInt(ss[0]);m = Integer.parseInt(ss[1]);Arrays.fill(h, -1);for (int i = 1; i <= n; i++) {ss = br.readLine().split(" ");int x = Integer.parseInt(ss[0]);int y = Integer.parseInt(ss[1]);int r = Integer.parseInt(ss[2]);cirs[i] = new Circle(x, y, r);int t = find(x, y);if (h[t] == -1) h[t] = getkey(x, y);if (id[t] == 0 || cirs[id[t]].r < r) {id[t] = i;}}while (m-- != 0) {ss = br.readLine().split(" ");int x = Integer.parseInt(ss[0]);int y = Integer.parseInt(ss[1]);int r = Integer.parseInt(ss[2]);for (int i = x - r; i <= x + r; i++) {for (int j = y - r; j <= y + r; j++) {if (sqr(i - x) + sqr(j - y) <= sqr(r)) {int t = find(i, j);if (id[t] != 0 && !st[t]) {dfs(i, j, cirs[id[t]].r);}}}}}int ans = 0;for (int i = 1; i <= n; i++) {if (st[find(cirs[i].x, cirs[i].y)]) ans++;}System.out.println(ans);}}

相关文章:

蓝桥杯算法模板

模拟散列表拉链法import java.io.*; import java.util.*; public class a1 {static int n;static int N100003;static int[] hnew int[N];static int[] enew int[N];static int[] nenew int[N]; static int idx; static void insert(int x){int k(x%NN)%N;e[idx]x;ne[idx]h[k];…...

python之并发编程

一、并发编程之多进程 1.multiprocessing模块介绍 python中的多线程无法利用多核优势&#xff0c;如果想要充分地使用多核CPU的资源&#xff08;os.cpu_count()查看&#xff09;&#xff0c;在python中大部分情况需要使用多进程。Python提供了multiprocessing。 multiprocess…...

Vue.js自定义事件的使用(实现父子之间的通信)

vue v-model修饰符&#xff1a;.lazy、.number、.trim $attrs数据的透传&#xff0c;在组件&#xff08;这个是写在App.vue中&#xff09;,数据就透传到student组件中&#xff0c;在template中可以直接使用{{$attrs.students}}获取数据 通过defineProps定义的属性在attrs中就…...

第12天-商品维护(发布商品、商品管理、SPU管理)

1.发布商品流程 发布商品分为5个步骤&#xff1a; 基本信息规格参数销售属性SKU信息保存完成 2.发布商品-基本信息 2.1.会员等级-会员服务 2.1.1.会员服务-网关配置 在网关增加会员服务的路由配置 - id: member_routeuri: lb://gmall-memberpredicates:- Path/api/member/…...

动态分区分配计算

动态分区分配 内存连续分配管理分为&#xff1a; 单一连续分配固定分区分配动态分区分配&#xff08;本篇所讲&#xff09; 首次适应算法&#xff08;First Fit&#xff0c;FF&#xff09; 该算法又称最先适应算法&#xff0c;要求空闲分区按照首地址递增的顺序排列。 优点…...

【云原生】k8s的pod基本概念

一、资源限制 Pod 是 kubernetes 中最小的资源管理组件&#xff0c;Pod 也是最小化运行容器化应用的资源对象。一个 Pod 代表着集群中运行的一个进程。kubernetes 中其他大多数组件都是围绕着 Pod 来进行支撑和扩展 Pod 功能的&#xff0c;例如用于管理 Pod 运行的 StatefulSe…...

【史上最全面esp32教程】激光与食人鱼模块篇

文章目录食人鱼模块模块介绍连线说明操作激光模块模块介绍连线说明操作总结提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 食人鱼模块 模块介绍 采用食人鱼LED设计制作一个发光的电子模块&#xff0c;其实他的本质和LED无区别。 连线说明 名称接线…...

《代码整洁之道》二之有意义的命名

1.有意义的命名 1.1 名副其实 取个好名字需要花时间&#xff0c;但是价值远超取名的时间&#xff0c;一旦发现更好的名称就换掉旧的。这么做&#xff0c;读你代码的人都会很开心。 变量名、方法名、类名称需要清晰的告诉别人含义&#xff0c;如果名称需要注释来补充&#xf…...

天气预测demo

天气预测1 数据集介绍1.1 训练集1.2 测试集2 导入数据进行数据分析2.1 浏览数据2.2 探索数据2.2.1 查看数据类型1 数据集介绍 1.1 训练集 训练集中共有116369个样本&#xff0c;每个样本有23个特征&#xff0c;特征具体介绍如下&#xff1a; 列名解释Date&#xff1a;日期&a…...

HDMI协议介绍(四)--Video

目录 视频格式 RGB444 YUV444 YUV422 YUV420 Color Depth Video控制信号 Pixel Repetition HDMI支持多种视频格式和分辨率。以hdmi1.4和2.0协议来说&#xff0c;视频格式支持RGB444、YUV444、YUV422和YUV420&#xff0c;其中RGB444和YUV444一般都是要求支持的。 视频格式…...

微信授权登录流程以及公众号配置方法(golang后端)

一、准备一个已经认证OK的微信公众号和已经备案的域名&#xff0c;且解析好配置好https证书。 1.如上图 微信公众号 > 基本配置 &#xff0c;设置开发者密码 2.设置IP白名单&#xff0c;白名单填写提供后端服务的服务器公网IP 二、公众号服务器配置。 1.找到基本配置 2.将服…...

【软件测试面试题】大厂头条:如何定位bug?实际案例拿offer还不简单......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 问题&#xff1a; 用…...

kubeconfig生成最高权限的token

参考文档 1.https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/authentication/ 2. https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/ 操作流程 生成kubernetes集群最高权限admin用户的token admin-role.yaml kind: ClusterRoleBindin…...

Android 9.0 蓝牙去掉传输文件的功能

1.概述 在9.0的系统rom定制化产品开发中,在原生系统中蓝牙这块的功能也是非常重要的,所以在对蓝牙功能开发过程中,对功能的定制要求也多,在蓝牙的开发需求中,功能要求 也是越来越多的,产品需要要求在蓝牙文件传输过程中,进行限制就是不让蓝牙传输文件,所以要求在开始传…...

C语言指针易错点—字符数组与字符指针

C语言指针易错点—字符数组与字符指针字符数组与字符指针的区别字符数组与字符指针的区别举例字符指针必须先赋值&#xff0c;后引用字符数组与字符指针的区别 因为字符数组与字符指针都可以表示字符串&#xff0c;但他们不是等价的。下面就来讲讲他们的区别。 char sa[ ] &…...

Yolov3,v4,v5区别

网络区别就不说了&#xff0c;ipad笔记记录了&#xff0c;这里只说其他的区别1 输入区别1.1 yolov3没什么特别的数据增强方式1.2 yolov4Mosaic数据增强Yolov4中使用的Mosaic是参考2019年底提出的CutMix数据增强的方式&#xff0c;但CutMix只使用了两张图片进行拼接&#xff0c;…...

基于Appium+WinAppDriver+Python的winUI3应用的自动化框架搭建分享(一)环境配置

安装WinAppDriver下载并安装WinAppDriver:来源 https://github.com/Microsoft/WinAppDriver/releases开启电脑的开发者模式设置-隐私和安全性-开发者选项-开发人员模式安装Appium安装Appium Server Gui https://github.com/appium/appium-desktop/releases安装Appium Inspector…...

使用docker安装RocketMQ

文章目录1.创建namesrv服务拉取镜像创建namesrv数据存储路径构建namesrv容器2.创建broker节点创建broker数据存储路径创建配置文件构建broker容器3.创建rockermq-console服务拉取镜像构建rockermq-console容器需要关闭防火墙或者开放namesrv和broker端口关闭防火墙开放指定端口…...

【FPGA仿真】Matlab生成二进制、十六进制的txt数据以及Vivado读取二进制、十六进制数据并将结果以txt格式保存

Matlab 生成二进制、十六进制数据 在使用Vivado软件进行Verilog程序仿真时可能需要对模块输入仿真的数据&#xff0c;因此我们需要一个产生数据的方法&#xff08;二进制或者十六进制的数据&#xff09;&#xff0c;Matlab软件是一个很好的工具&#xff0c;当然你也可以使用VS…...

【第四章 IOC操作bean管理(基于注解方式创建对象,注入属性),完全注解开发】

第四章 IOC操作bean管理&#xff08;基于注解方式创建对象&#xff0c;注入属性&#xff09;&#xff0c;完全注解开发 1.IOC操作bean管理&#xff08;基于注解方式&#xff09; &#xff08;1&#xff09;什么是注解&#xff1a; ①注解是代码特殊标记&#xff0c;格式&#…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...