当前位置: 首页 > 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;格式&#…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下&#xff1a; avformat_open_input 精简后的代码如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志&#xff0c;定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据&#xff01;该数据集源自2025年4月发表于《地理学报》的论文成果…...

跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践

在电商行业蓬勃发展的当下&#xff0c;多平台运营已成为众多商家的必然选择。然而&#xff0c;不同电商平台在商品数据接口方面存在差异&#xff0c;导致商家在跨平台运营时面临诸多挑战&#xff0c;如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...

【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析

1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器&#xff08;TI&#xff09;推出的一款 汽车级同步降压转换器&#xff08;DC-DC开关稳压器&#xff09;&#xff0c;属于高性能电源管理芯片。核心特性包括&#xff1a; 输入电压范围&#xff1a;2.95V–6V&#xff0c;输…...