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

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

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

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

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...

macOS 终端智能代理检测

&#x1f9e0; 终端智能代理检测&#xff1a;自动判断是否需要设置代理访问 GitHub 在开发中&#xff0c;使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新&#xff0c;例如&#xff1a; fatal: unable to access https://github.com/ohmyzsh/oh…...