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

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》

近日&#xff0c;嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》&#xff0c;海云安高敏捷信创白盒&#xff08;SCAP&#xff09;成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天&#xff0c;网络安全已成为企业生存与发展的核心基石&#xff0c;为了解…...

对象回调初步研究

_OBJECT_TYPE结构分析 在介绍什么是对象回调前&#xff0c;首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例&#xff0c;用_OBJECT_TYPE这个结构来解析它&#xff0c;0x80处就是今天要介绍的回调链表&#xff0c;但是先不着急&#xff0c;先把目光…...

算法—栈系列

一&#xff1a;删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...