蓝桥杯专题-试题版-【危险系数】【网络寻路】【高僧斗法】【约数倍数选卡片】

  • 点击跳转专栏=>Unity3D特效百例
  • 点击跳转专栏=>案例项目实战源码
  • 点击跳转专栏=>游戏脚本-辅助自动化
  • 点击跳转专栏=>Android控件全解手册
  • 点击跳转专栏=>Scratch编程案例
  • 点击跳转=>软考全系列
  • 点击跳转=>蓝桥系列

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单

芝麻粒儿-空名先生

👉实践过程

需要所有整理的文档可底部卡片联系我,直接发压缩包。

😜危险系数

问题描述
抗日战争时期,冀中平原的地道战曾发挥重要作用。
地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。
我们来定义一个危险系数DF(x,y):
对于两个站点x和y (x != y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x,y的关键点。相应的,对于任意一对站点x和y,危险系数DF(x,y)就表示为这两点之间的关键点个数。
本题的任务是:已知网络结构,求两站点之间的危险系数。
输入格式
输入数据第一行包含2个整数n(2 <= n <= 1000), m(0 <= m <= 2000),分别代表站点数,通道数;
接下来m行,每行两个整数 u,v (1 <= u, v <= n; u != v)代表一条通道;
最后1行,两个数u,v,代表询问两点之间的危险系数DF(u, v)。
输出格式
一个整数,如果询问的两点不连通则输出-1.
样例输入
7 6
1 3
2 3
3 4
3 5
4 5
5 6
1 6
样例输出
2

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;public class Main {static int n,m;public static void main(String[] args) throws IOException {BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));StringTokenizer tok=new StringTokenizer(bfr.readLine());
//		long begin=System.currentTimeMillis();n=Integer.parseInt(tok.nextToken());m=Integer.parseInt(tok.nextToken());ArrayList<Integer>[] way=new ArrayList[n];int count=0;int i;for(i=0;i<n;i++) way[i]=new ArrayList<Integer>();for(i=0;i<m;i++){tok=new StringTokenizer(bfr.readLine());int x=Integer.parseInt(tok.nextToken())-1, y=Integer.parseInt(tok.nextToken())-1;way[x].add(y); way[y].add(x);}tok=new StringTokenizer(bfr.readLine());int g1=Integer.parseInt(tok.nextToken())-1, g2=Integer.parseInt(tok.nextToken())-1;for(i=0;i<n;i++){if(i==g1 || i==g2) continue;boolean[] flag=new boolean[n];int[] que=new int [n];int front=0,rear=1;que[0]=g1;while(front<rear){for(int p=0;p<way[que[front]].size();p++){if(way[que[front]].get(p)==i) continue;if (!flag[way[que[front]].get(p)]){que[rear] = way[que[front]].get(p);flag[que[rear]]=true;if(que[rear]==g2) break;rear++;}}if(flag[g2]) { count++; break; }front++;}}System.out.println(n-2-count);
//		System.out.println(System.currentTimeMillis()-begin);}
}

😜网络寻路

问题描述
X 国的一个网络使用若干条线路连接若干个节点。节点间的通信是双向的。某重要数据包,为了安全起见,必须恰好被转发两次到达目的地。该包可能在任意一个节点产生,我们需要知道该网络中一共有多少种不同的转发路径。
源地址和目标地址可以相同,但中间节点必须不同。
如下图所示的网络。
1 -> 2 -> 3 -> 1 是允许的
1 -> 2 -> 1 -> 2 或者 1 -> 2 -> 3 -> 2 都是非法的。
输入格式
输入数据的第一行为两个整数N M,分别表示节点个数和连接线路的条数(1<=N<=10000; 0<=M<=100000)。
接下去有M行,每行为两个整数 u 和 v,表示节点u 和 v 联通(1<=u,v<=N , u!=v)。
输入数据保证任意两点最多只有一条边连接,并且没有自己连自己的边,即不存在重边和自环。
输出格式
输出一个整数,表示满足要求的路径条数。
样例输入1
3 3
1 2
2 3
1 3
样例输出1
6
样例输入2
4 4
1 2
2 3
3 1
1 4
样例输出2
10

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {public static void main(String[] args) throws IOException {BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));StringTokenizer tok = new StringTokenizer(bfr.readLine());int n = Integer.parseInt(tok.nextToken());int m = Integer.parseInt(tok.nextToken());int i, count = 0;ArrayList<Integer>[] way = new ArrayList[n];for (i = 0; i < n; i++)way[i] = new ArrayList<Integer>();for (i = 0; i < m; i++) {tok = new StringTokenizer(bfr.readLine());int x = Integer.parseInt(tok.nextToken()) - 1;int y = Integer.parseInt(tok.nextToken()) - 1;way[x].add(y);way[y].add(x);}for (i = 0; i < n; i++) {int a = i, ll = way[i].size();for (int ii = 0; ii < ll; ii++) {int aa = way[a].get(ii);int lll = way[aa].size();for (int iii = 0; iii < lll; iii++) {int aaa = way[aa].get(iii);if (aaa == a)continue;count += way[aaa].size();count--;}}}System.out.println(count);}
}

😜高僧斗法

问题描述
  古时丧葬活动中经常请高僧做法事。仪式结束后,有时会有“高僧斗法”的趣味节目,以舒缓压抑的气氛。
  节目大略步骤为:先用粮食(一般是稻米)在地上“画”出若干级台阶(表示N级浮屠)。又有若干小和尚随机地“站”在某个台阶上。最高一级台阶必须站人,其它任意。(如图1所示)
  两位参加游戏的法师分别指挥某个小和尚向上走任意多级的台阶,但会被站在高级台阶上的小和尚阻挡,不能越过。两个小和尚也不能站在同一台阶,也不能向低级台阶移动。
  两法师轮流发出指令,最后所有小和尚必然会都挤在高段台阶,再也不能向上移动。轮到哪个法师指挥时无法继续移动,则游戏结束,该法师认输。
  对于已知的台阶数和小和尚的分布位置,请你计算先发指令的法师该如何决策才能保证胜出。
输入格式
  输入数据为一行用空格分开的N个整数,表示小和尚的位置。台阶序号从1算起,所以最后一个小和尚的位置即是台阶的总数。(N<100, 台阶总数<1000)
输出格式
  输出为一行用空格分开的两个整数: A B, 表示把A位置的小和尚移动到B位置。若有多个解,输出A值较小的解,若无解则输出-1。
样例输入
1 5 9
样例输出
1 4
样例输入
1 5 8 10
样例输出
1 3

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {public static void main(String[] args) throws IOException {BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));StringTokenizer tok= new StringTokenizer(bfr.readLine());int i=0,j,flag=1;int[] monk=new int[108];while(tok.hasMoreTokens()) monk[i++]=Integer.parseInt(tok.nextToken());int N=i-1;int[] A=new int[N];for(i=0;i<N;i++) A[i]=monk[i+1]-monk[i]-1;int sum=A[0];for(i=2;i<N;i++,i++) sum^=A[i];if(sum==0) System.out.println(-1);else{for(i=0;i<N;i++){for(j=1;j<=A[i];j++){int s=sum;A[i]-=j;if(i>0) A[i-1]+=j;if(i%2==0)  { s^=(A[i]+j); s^=A[i]; }else { s^=(A[i-1]-j); s^=A[i-1]; }if(s==0) { System.out.println(monk[i]+" "+(monk[i]+j)); flag=0; break; }else { A[i]+=j; if(i>0) A[i-1]-=j; }}if(flag==0) break;}}}
}

😜约数倍数选卡片

问题描述
  闲暇时,福尔摩斯和华生玩一个游戏:
  在N张卡片上写有N个整数。两人轮流拿走一张卡片。要求下一个人拿的数字一定是前一个人拿的数字的约数或倍数。例如,某次福尔摩斯拿走的卡片上写着数字“6”,则接下来华生可以拿的数字包括:
  1,2,3, 6,12,18,24 …
  当轮到某一方拿卡片时,没有满足要求的卡片可选,则该方为输方。
  请你利用计算机的优势计算一下,在已知所有卡片上的数字和可选哪些数字的条件下,怎样选择才能保证必胜!
  当选多个数字都可以必胜时,输出其中最小的数字。如果无论如何都会输,则输出-1。
输入格式
  输入数据为2行。第一行是若干空格分开的整数(每个整数介于1~100间),表示当前剩余的所有卡片。
  第二行也是若干空格分开的整数,表示可以选的数字。当然,第二行的数字必须完全包含在第一行的数字中。
输出格式
  程序则输出必胜的招法!!
样例输入
2 3 6
3 6
样例输出
3
样例输入
1 2 2 3 3 4 5
3 4 5
样例输出
4

import java.util.Arrays;
import java.util.Scanner;
public class Main{static int[] cnt=new int[101];static int[] end=new int[101];public static boolean f(int[][] table,int x){for(int i=end[x];i>=0;i--) {		int j=table[x][i];		if(cnt[j]>0){cnt[j]--;				if(f(table,j)){cnt[j]++;			return false;}cnt[j]++;			}}return true;}public static void main(String[] args) {Scanner sc=new Scanner(System.in);String[] s1=sc.nextLine().split(" ");String[] s2=sc.nextLine().split(" ");int[] m=new int[s2.length];int[][] table=new int[101][100];for (int i = 0; i < s1.length; i++) {int x=Integer.parseInt(s1[i]);cnt[x]++;}for (int i = 1; i < 101; i++) {if(cnt[i]>0){int t=0;for (int j = 1; j <=100; j++) {if(cnt[j]>0 && (i%j==0||j%i==0)){table[i][t]=j;t++;}}end[i]=t-1;}}for (int i = 0; i < s2.length; i++) {m[i]=Integer.parseInt(s2[i]);}Arrays.sort(m);for (int i = 0; i < m.length; i++) {cnt[m[i]]--;if(f(table,m[i])){System.out.println(m[i]);return;}cnt[m[i]]++;}System.out.println(-1);}}

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/5113.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apollo分布式配置中心(二)

上一篇&#xff1a; 上一篇已经知道Apollo是什么东西了&#xff0c;接下来实践一下 目录 一、创建应用 1、 新增配置 2、创建Namespace ​3、同步配置 4、灰度发布 添加灰度配置项 ​编辑 配置灰度规则 二、删除应用、集群、appNamespace 三、springBoot整合Apollo …

C/C++结构体内存对齐的一些思考

在C中&#xff0c;结构体的内存对齐是为了提高访问结构体成员变量的效率和保证硬件的要求。 结构体对齐 C/C C 结构体内存对齐的示例代码C/C结构体内存对齐的原则结合汇编代码分析结构体的内存对齐问题 C 结构体内存对齐的示例代码 #include <iostream>struct Test_Stru…

C++之GNU C的__attribute__常用属性(一百五十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Symbol.for()

示例&#xff1a;Symbol() 和 Symbol.for(‘ ’)的区别 Symbol.for("foo"); // 创建一个 symbol 并放入 symbol 注册表中&#xff0c;键为 "foo" Symbol.for("foo"); // 从 symbol 注册表中读取键为"foo"的 symbolSymbol.for("b…

ISE软件基本使用

ISE软件基本使用 基本设置 关联notepad的操作&#xff1a;选择notepad的exe文件路径&#xff0c;并且加 { } 符号&#xff0c;并在结尾加$1。ISE可以设置程序运行的速度等级&#xff0c;该速度等级会影响程序从外部SPI Flash启动的启动速度。JTAG 接口的作用是将编译好的程 序…

Docker中安装Nginx

查看可以安装的Nginx版本: docker search nginx 下载最新版本: docker pull nginx :latest 可以省略 运行容器: docker run -itd --name my_nginx -p 80:80 nginx 在主机通过 https://localhost:80或者 http://192.168.40.100:80可以访问 如果之前创…

java feign的使用详细步骤及okhttp的使用

1、首先创建一个feign的模块并配置依赖&#xff0c;如图&#xff1a; 1、引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency&g…

基于java的汽车服务管理系统(Car Service Management System)

设计一款基于java的管理和跟踪对车辆所做服务的系统。我们的系统允许服务技术人员跟踪客户、他们的车辆以及对这些车辆所做的服务。 需要项目的朋友私信我&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; Car Service Management System 基本的使用…

Python 字符串的使用

字符串使用 1. 字符串的定义方式 双引号或者单引号括起来的数据&#xff0c;就是字符串。使用三引号括起来也是字符串&#xff0c;并支持换行。 例&#xff1a; # 使用反斜线 对单引号进行转义 name1 i\ Tom name2 "Rose" name3 Tom name4 ""&qu…

K8s是什么?

K8s是开源的&#xff0c;用于管理云平台中多个主机上的容器化的应用。&#xff08;docker只能是单主机上的容器化的应用&#xff09; 职责&#xff1a;管理容器应用 目标&#xff1a;让部署容器化的应用简单高效 Rancher 可以通过界面管理 K8s 平台 一、让我们先来了解一个什…

Jenkins+Docker 实现一键自动化部署项目

1、环境配置 环境&#xff1a;centos7git(gitee) 简述实现步骤&#xff1a;在docker安装jenkins&#xff0c;配置jenkins基本信息&#xff0c;利用Dockerfile和shell脚本实现项目自动拉取打包并运行。 2、安装docker docker 安装社区版本CE 确保 yum 包更新到最新。 yum …

ESP32设备驱动-SCD40二氧化碳湿度和温度传感器驱动

SCD40二氧化碳湿度和温度传感器驱动 文章目录 SCD40二氧化碳湿度和温度传感器驱动1、SCD40介绍2、硬件准备3、软件准备4、驱动实现1、SCD40介绍 SCD4x 是 Sensirion 的下一代微型 CO2 传感器。 该传感器基于光声 NDIR 传感原理和 Sensirion 的专利 PASens 和 CMOSens 技术,以…