新手蓝桥杯冲击国一练习题单(四)
2025蓝桥杯省赛已结束,接下来是冲击国赛的时间
此题单为算法基础精选题单,包含蓝桥杯常考考点以及各种经典算法,可以帮助你打牢基础,查漏补缺。
本题单目标是冲击蓝桥杯省一国一,团体程序天梯赛个人国三、XCPC区域赛铜/银奖
本次题单的重点是图论、模拟(练习暴力写题能力)、填空题
图论是蓝桥杯常考并且较难的内容,如果想要拿到高分,学会常用的几个图论算法是很有必要的
填空题是蓝桥杯中容易拉分的题型,在填空题中常常会有许多坑
本次题单的题目及类型如下:
图论
Dijkstra求最短路 I 模板题—acwing
Dijkstra求最短路 II 模板题—acwing
有边数限制的最短路 模板题—acwing
spfa求最短路 模板题—acwing
Floyd求最短路 模板题—acwing
狡兔 k 窟—2024蓝桥杯省赛真题
星际旅行—2024蓝桥杯cb组省赛真题
模拟
I Love 1543——codeforces周赛
分布式队列—2024蓝桥杯省赛真题
填空题练习
报数游戏—2024蓝桥杯省赛真题
类斐波那契循环数——2024蓝桥杯真题
更多题单请看:
蓝桥杯冲击国一练习题单(一)
蓝桥杯进制问题秒破解法|冲击国一题单(二)
蓝桥杯新手算法练习题单Java|冲击国一(三)
一、图论
1.1Dijkstra求最短路 I
我是补题链接点我跳转写题
给定一个 n个点 m条边的有向图,图中可能存在重边和自环,所有边权均为正值。
请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。
输入格式
第一行包含整数 n 和 m。
接下来 mm 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。
输出格式
输出一个整数,表示 1 号点到 n 号点的最短距离。
如果路径不存在,则输出 −1。
数据范围
1≤n≤500,
1≤m≤105,
图中涉及边长均不超过10000。
输入样例:
3 3
1 2 2
2 3 1
1 3 4
输出样例:
3
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.*;public class Main {static int n,m,INF=1000000000,N=510;static int dis[]=new int[N];static boolean flag[]=new boolean[N];static int map[][]=new int[N][N];public static void main(String[] args) throws IOException {Read sc=new Read();n=sc.nextInt();m=sc.nextInt();Arrays.fill(dis,INF);for(int i=1;i<N;i++){for(int j=1;j<N;j++){map[i][j]=INF;}}for(int i=0;i<m;i++){int a=sc.nextInt();int b=sc.nextInt();int c=sc.nextInt();map[a][b]= Math.min(map[a][b],c);}int ans=dijk(1);if(ans==INF) System.out.println(-1);else System.out.println(ans);}static int dijk(int start){dis[start]=0;for(int i=0;i<n;i++){int t=-1;for(int j=1;j<=n;j++){if(!flag[j]&&(t==-1||dis[t]>dis[j])){t=j;}}flag[t]=true;for(int j=1;j<=n;j++){dis[j]=Math.min(dis[j],dis[t]+map[t][j]);}}return dis[n];}
}
class Read {BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));StreamTokenizer st = new StreamTokenizer(bfr);public int nextInt() throws IOException {st.nextToken();return (int) st.nval;}public long nextLong() throws IOException {st.nextToken();return (long) st.nval;}public Double nextDouble() throws IOException {st.nextToken();return (Double) st.nval;}public String nextLine() throws IOException {return bfr.readLine();}public String next() throws IOException {return st.sval;}
}
1.2Dijkstra求最短路 II
我是补题链接点我跳转写题
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为非负值。
请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。
输入格式
第一行包含整数 n 和 m。
接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。
输出格式
输出一个整数,表示 1 号点到 n 号点的最短距离。
如果路径不存在,则输出 −1。
数据范围
1≤n,m≤1.5×105
图中涉及边长均不小于 0,且不超过 10000
数据保证:如果最短路存在,则最短路的长度不超过 109。
输入样例:
3 3
1 2 2
2 3 1
1 3 4
输出样例:
3
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.*;public class Main {static int N=200010,n,m,INF=100000000,idx;static int dis[]=new int[N],w[]=new int[N],val[]=new int[N],id[]=new int[N],next[]=new int[N];static boolean flag[]=new boolean[N];public static void main(String[] args) throws IOException {Read sc=new Read();n=sc.nextInt();m=sc.nextInt();Arrays.fill(dis,INF);Arrays.fill(id,-1);for(int i=1;i<=m;i++){int a=sc.nextInt();int b= sc.nextInt();int c=sc.nextInt();add(a,b,c);}int ans=dijk2(1);if(ans>=INF/2) System.out.println(-1);else System.out.println(ans);}static int dijk2(int start){dis[start]=0;Queue<dj2> queue=new PriorityQueue<>();queue.offer(new dj2(start,0));while(!queue.isEmpty()){dj2 t=queue.poll();if(flag[t.id])continue;flag[t.id]=true;for (int i=id[t.id];i!=-1;i=next[i]){int j=val[i];if(dis[j]>dis[t.id]+w[i]){dis[j]=dis[t.id]+w[i];queue.offer(new dj2(j,dis[j]));}}}return dis[n];}static void add(int a,int b,int c){val[idx]=b;next[idx]=id[a];w[idx]=c;id[a]=idx++;}
}
class dj2 implements Comparable<dj2>{int id;int d;public dj2(int id,int d){this.id=id;this.d=d;}@Overridepublic int compareTo(dj2 o) {return this.d-o.d;}
}
class Read {BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));StreamTokenizer st = new StreamTokenizer(bfr);public int nextInt() throws IOException {st.nextToken();return (int) st.nval;}public long nextLong() throws IOException {st.nextToken();return (long) st.nval;}public Double nextDouble() throws IOException {st.nextToken();return (Double) st.nval;}public String nextLine() throws IOException {return bfr.readLine();}public String next() throws IOException {return st.sval;}
}
1.3有边数限制的最短路
我是补题链接点我跳转写题
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。
请你求出从 1 号点到 n 号点的最多经过 k 条边的最短距离,如果无法从 1 号点走到 n 号点,输出 impossible
。
注意:图中可能 存在负权回路 。
输入格式
第一行包含三个整数 n,m,k
接下来 m 行,每行包含三个整数 x,y,z表示存在一条从点 x 到点 y 的有向边,边长为 z。
点的编号为 1∼n
输出格式
输出一个整数,表示从 1 号点到 n 号点的最多经过 k 条边的最短距离。
如果不存在满足条件的路径,则输出 impossible
。
数据范围
1≤n,k≤500
1≤m≤10000
1≤x,y≤n
任意边长的绝对值不超过 10000
输入样例:
3 3 1
1 2 1
2 3 1
1 3 3
输出样例:
3
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;public class Main {static int n,m,k,INF=1000000000,N=1000;static List<edge> map=new ArrayList<>();static int dis[]=new int[N],backup[]=new int[N];public static void main(String[] args) {// TODO 自动生成的方法存根Scanner sc=new Scanner(System.in);Arrays.fill(dis, INF);n=sc.nextInt();m=sc.nextInt();k=sc.nextInt();for(int i=1;i<=m;i++){int a=sc.nextInt();int b=sc.nextInt();int c=sc.nextInt();map.add(new edge(a, b, c));}int ans=tbellman(1);if(ans>=INF/2)System.out.println("impossible");else System.out.println(ans);}static int tbellman(int start){dis[start]=0;for(int i=0;i<k;i++){backup=Arrays.copyOf(dis, dis.length);for(int j=0;j<m;j++){int a=map.get(j).a;int b=map.get(j).b;int w=map.get(j).c;dis[b]=Math.min(dis[b], backup[a]+w);}}return dis[n];}}
class edge{int a;int b;int c;public edge(int a,int b,int c){this.a=a;this.b=b;this.c=c;}
}
1.4 spfa求最短路
我是补题链接点我跳转写题
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。
请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 impossible
。
数据保证不存在负权回路。
输入格式
第一行包含整数 n 和 m。
接下来 mm 行每行包含三个整数 x,y,z表示存在一条从点 x 到点 y 的有向边,边长为 z。
输出格式
输出一个整数,表示 1 号点到 n 号点的最短距离。
如果路径不存在,则输出 impossible
。
数据范围
1≤n,m≤105
图中涉及边长绝对值均不超过 10000
输入样例:
3 3
1 2 5
2 3 -3
1 3 4
输出样例:
2
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;public class Main {static int N=200000,n,m,INF=1000000000,idx;static int w[]=new int[N],next[]=new int[N],val[]=new int[N],id[]=new int[N],dis[]=new int[N];static boolean flag[]=new boolean[N];public static void main(String[] args) {// TODO 自动生成的方法存根Scanner sc=new Scanner(System.in);n=sc.nextInt();m=sc.nextInt();Arrays.fill(dis, INF);Arrays.fill(id, -1);for(int i=1;i<=m;i++){int a=sc.nextInt();int b=sc.nextInt();int c=sc.nextInt();add(a,b,c);}int ans=tspfa(1);if(ans>=INF/2) System.out.println("impossible");else System.out.println(dis[n]);}static int tspfa(int start){dis[start]=0;Queue<Integer> queue=new LinkedList<>();queue.offer(start);flag[start]=true;while(!queue.isEmpty()){int t=queue.poll();flag[t]=false;for(int i=id[t];i!=-1;i=next[i]){int j=val[i];if(dis[j]>dis[t]+w[i]){dis[j]=dis[t]+w[i];if(!flag[j]){queue.offer(j);flag[j]=true;}}}}return dis[n];}static void add(int a,int b,int c){val[idx]=b;next[idx]=id[a];w[idx]=c;id[a]=idx++;}}
1.5Floyd求最短路
我是补题链接点我跳转写题
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,边权可能为负数。
再给定 k 个询问,每个询问包含两个整数 x 和 y,表示查询从点 x 到点 y 的最短距离,如果路径不存在,则输出 impossible
。
数据保证图中不存在负权回路。
输入格式
第一行包含三个整数 n,m,k
接下来 m 行,每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。
接下来 k 行,每行包含两个整数 x,y,表示询问点 x 到点 y 的最短距离。
输出格式
共 k 行,每行输出一个整数,表示询问的结果,若询问两点间不存在路径,则输出 impossible
。
数据范围
1≤n≤200
1≤k≤n2
1≤m≤20000
图中涉及边长绝对值均不超过 10000
输入样例:
3 3 2
1 2 1
2 3 2
1 3 1
2 1
1 3
输出样例:
impossible
1
import java.util.Scanner;public class Main {static int N=1000,n,m,k,INF=1000000000;static int map[][]=new int[N][N];public static void main(String[] args) {// TODO 自动生成的方法存根Scanner sc=new Scanner(System.in);n=sc.nextInt();m=sc.nextInt();k=sc.nextInt();for(int i=1;i<N;i++){for(int j=1;j<N;j++){if(i==j)map[i][j]=0;else map[i][j]=INF;}}for(int i=1;i<=m;i++){int a=sc.nextInt();int b=sc.nextInt();int c=sc.nextInt();map[a][b]=Math.min(map[a][b], c);}tfloyd();for(int i=1;i<=k;i++){int a=sc.nextInt();int b=sc.nextInt();if(map[a][b]>=INF/2)System.out.println("impossible");else System.out.println(map[a][b]);}}static void tfloyd(){for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){map[i][j]=Math.min(map[i][j], map[i][k]+map[k][j]);}}}}
}
1.6 狡兔 k 窟
我是补题链接点我跳转
题目描述
一只兔子名叫小蓝,它异常狡猾,在土中挖了若干洞窟并且设置了很多出入口来应对紧急情况。它一共有 n 个通往地面的出入口,在地面上这 n 个出入口之间由 n − 1 条长度为 1 的双向通路连成一个连通图。第 i 个出入口属于第 ci个洞窟,因此小蓝可以在任意一个属于 ci 的出入口从地面进入洞窟然后从任意一个属于 ci 的出入口跑出到达地面。
小蓝提出了 m 个逃跑路线,第 i 个路线希望从出入口 si 逃往 ti ,它希望在逃跑的过程中在地面上跑动的距离尽可能短,请为每条路线计算逃跑时在地面上跑动的最短距离。
输入格式
输入的第一行包含两个正整数 n, m ,用一个空格分隔。
第二行包含 n 个正整数 c1, c2, · · · , cn ,相邻整数之间使用一个空格分隔。
接下来 n − 1 行,第 i 行包含两个整数 ui, vi ,用一个空格分隔,表示地面上的一条通路连接 ui 和 vi 。
接下来 m 行,第 i 行包含两个整数 si, ti ,用一个空格分隔。
输出格式
输出 m 行,每行包含一个整数,依次表示每个询问的答案。
样例输入
6 3 1 3 2 1 2 3 1 2 1 3 2 4 2 5 3 6 2 6 3 2 4 3
样例输出
0 1 1
提示
对于 20% 的评测用例,1 ≤ n, m, ci ≤ 100 ;
对于所有评测用例,1 ≤ n, m, ci ≤ 5000 ,1 ≤ ui, vi, si, ti ≤ n 。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.*;public class Main {static int N = 50010, n, m, INF = 1000000000, idx;static int dis[]=new int[N],id[]=new int[N],w[]=new int[N],val[]=new int[N],next[]=new int[N];static boolean flag[];static boolean flag2[]=new boolean[N];static List<Integer> list=new ArrayList<>();public static void main(String[] args) throws IOException {Read sc=new Read();n=sc.nextInt();m=sc.nextInt();Arrays.fill(id,-1);int arr[]=new int[n+1];for(int i=1;i<=n;i++){int num=sc.nextInt();arr[i]=num;}for(int i=0;i<n-1;i++){int a=sc.nextInt();int b=sc.nextInt();add(a,b,1);add(b,a,1);}for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){if(arr[i]==arr[j]){add(i,j,0);add(j,i,0);}}}for(int i=0;i<m;i++){int a=sc.nextInt();int b=sc.nextInt();System.out.println(dijk2(a,b));}}static int dijk2(int start,int end){if (start == end) return 0;Arrays.fill(dis,INF);flag=new boolean[N];dis[start]=0;Deque<Integer> queue = new ArrayDeque<>();queue.add(start);while(!queue.isEmpty()){int t=queue.poll();if(t==end)return dis[t];if (flag[t]) continue;flag[t] = true;for(int i=id[t];i!=-1;i=next[i]){int j=val[i];if(dis[j]>dis[t]+w[i]){dis[j]=dis[t]+w[i];if (w[i] == 0) {queue.addFirst(j);} else {queue.addLast(j);}}}}return dis[end];}static void add(int a,int b,int c){val[idx]=b;next[idx]=id[a];w[idx]=c;id[a]=idx++;}
}
class Read {BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));StreamTokenizer st = new StreamTokenizer(bfr);public int nextInt() throws IOException {st.nextToken();return (int) st.nval;}public long nextLong() throws IOException {st.nextToken();return (long) st.nval;}public Double nextDouble() throws IOException {st.nextToken();return (Double) st.nval;}public String nextLine() throws IOException {return bfr.readLine();}public String next() throws IOException {return st.sval;}
}
1.7 星际旅行
我是补题链接点我跳转写题
问题描述
小明国庆节准备去某星系进行星际旅行,这个星系里一共有 n 个星球,其中布置了 m 道双向传送门,第 i 道传送门可以连接 ai,bi两颗星球(ai≠bi 且任意两颗星球之间最多只有一个传送门)。
他看中了一款 “旅游盲盒”,一共有 Q 个盲盒,第 i 个盲盒里的旅行方案规定了旅行的起始星球 xi 和最多可以使用传送门的次数 yi。只要从起始星球出发,使用传送门不超过规定次数能到达的所有星球都可以去旅行。
小明关心在每个方案中有多少个星球可以旅行到。小明只能在这些盲盒里随机选一个购买,他想知道能旅行到的不同星球的数量的期望是多少。
输入格式
输入共 m+Q+1行
第一行为三个正整数 n,m,Q
后面 m 行,每行两个正整数 ai,bi
后面 Q 行,每行两个整数 xi,yi
输出格式
输出共一行,一个浮点数(四舍五入保留两位小数)。
样例输入
3 2 3
1 2
2 3
2 1
2 0
1 1
样例输出
2.00
样例说明
第一个盲盒可以旅行到 1,2,3
第二个盲盒可以旅行到 2
第三个盲盒可以旅行到 1,2
所以期望是 (3+1+2)/3=2.00
评测用例规模与约定
对于 20% 的评测用例,保证 n≤300
对于 100%的评测用例,保证 n≤1000,m≤min{n(n−1)2,5n},Q≤50000, 0≤yi≤n
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.*;
public class Main {static int n,m,k,INF=1000000000,N=2000;static int map[][]=new int[N][N];public static void main(String[] args) throws IOException {Read sc=new Read();n=sc.nextInt();m=sc.nextInt();k=sc.nextInt();for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(j==i)map[i][j]=0;else map[i][j]=INF;}}while(m-->0){int a=sc.nextInt();int b=sc.nextInt();map[a][b]=Math.min(map[a][b],1);map[b][a]=Math.min(map[b][a],1);}floyd();int ans=0;int q=k;while(k-->0){int a=sc.nextInt();int b=sc.nextInt();int cnt=0;for(int i=1;i<=n;i++){if(map[a][i]<=b)cnt++;}ans+=cnt;}double endand=(double)ans/q;System.out.println(String.format("%.2f",endand));}static void floyd(){for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){map[i][j]=Math.min(map[i][j],map[i][k]+map[k][j]);}}}}
}
class Read {BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));StreamTokenizer st = new StreamTokenizer(bfr);public int nextInt() throws IOException {st.nextToken();return (int) st.nval;}public long nextLong() throws IOException {st.nextToken();return (long) st.nval;}public Double nextDouble() throws IOException {st.nextToken();return (Double) st.nval;}public String nextLine() throws IOException {return bfr.readLine();}public String next() throws IOException {return st.sval;}
}
二、模拟
2.1 I Love 1543
这是机翻,觉得不好看请点原题
我是补题链接点我跳转写题
一日早晨,Polycarp 醒来,意识到 1543 是他生活中最喜欢的数字。
Polycarp 当天一睁开眼睛看到的第一件事是一个大小为 n×m 的大墙地毯;n 和 m 是偶数。每个单元格内包含从 0 到 9 的一个数字。
Polycarp 对这个地毯的每一层顺时针遍历时,数字 1543 会出现多少次产生了好奇。
地毯的第一层是定义为一条长度为 2⋅(n+m−2) 且厚度为 1 的封闭带,围绕地毯的外部部分。每一层是通过从原始地毯中去除所有先前的层,得到的地毯的第一层。
输入
输入的第一行包含一个整数 t (1≤t≤100) —— 测试用例的数量。接下来的每一行描述一个测试用例。
每个测试用例的第一行包含一对数字 n 和 m (2≤n,m≤10的3次方,n 和 m 是偶数)。
接下来的 n 行长度为 m,由数字 0 到 9 组成 —— 代表地毯的描述。
保证所有测试用例中,n⋅m 的和不超过 10的6次方。
输出
对于每个测试用例,输出一个整数 —— 地毯的所有层中,数字 1543 顺时针遍历时出现的总次数。
示例
输入
8
2 4
1543
7777
2 4
7154
8903
2 4
3451
8888
2 2
54
13
2 2
51
43
2 6
432015
512034
4 4
5431
1435
5518
7634
6 4
5432
1152
4542
2432
2302
5942
输出
1
1
0
1
0
2
2
2
注意:
第七个示例中 1543 的出现次数。不同的层使用不同的颜色标记。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.*;public class Main {public static void main(String[] args) throws IOException {Read sc=new Read();int t=sc.nextInt();while(t-->0){int n=sc.nextInt();int m=sc.nextInt();char map[][]=new char[n][m];for(int i=0;i<n;i++){String s=sc.nextLine();while (s.isEmpty())s=sc.nextLine();map[i]=s.toCharArray();}int ans=0;for(int i=0;i<Math.min(n,m)/2;i++){//层数ArrayList<Character> list = new ArrayList<>();for(int j=i;j<m-i;j++){//右list.add(map[i][j]);}for(int j=i+1;j<n-i;j++){//下list.add(map[j][m-i-1]);}//左for(int j=m-i-2;j>=i;j--){list.add(map[n-i-1][j]);}//上for(int j=n-i-2;j>i;j--){list.add(map[j][i]);}for (int j=0;j<list.size();j++){if(list.get(j)=='1'){if(match(list,j,"1543"))ans++;}}}System.out.println(ans);}}static boolean match(ArrayList<Character> list,int id,String s){for(int i=0;i<s.length();i++){if(s.charAt(i)!=list.get((id+i)%list.size()))return false;}return true;}
}class Read {BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));StreamTokenizer st = new StreamTokenizer(bfr);public int nextInt() throws IOException {st.nextToken();return (int) st.nval;}public long nextLong() throws IOException {st.nextToken();return (long) st.nval;}public String nextLine() throws IOException {;return bfr.readLine();}
}
2.2分布式队列
我是补题链接点我跳转写题
问题描述
小蓝最近学习了一种神奇的队列: 分布式队列。简单来说,分布式队列包含 N 个节点(编号为 0 至 N−1,其中 0 号为主节点),其中只有一个主节点,其余为副节点。
主/副节点中都各自维护着一个队列,当往分布式队列中添加元素时,都是由主节点完成的(每次都会添加元素到主节点对应的队列的尾部);副节点只负责同步主节点中的队列。可以认为主/副节点中的队列是一个长度无限的一维数组,下标为 0,1,2,3…同时副节点中的元素的同步顺序和主节点中的元素添加顺序保持一致。
由于副本的同步速度各异,因此为了保障数据的一致性,元素添加到主节点后,需要同步到所有的副节点后,才具有可见性。
给出一个分布式队列的运行状态,所有的操作都按输入顺序执行。你需要回答在某个时刻,队列中有多少个元素具有可见性。
输入格式
第一行包含一个整数 N,表示节点个数。
接下来包含多行输入,每一行包含一个操作,操作类型共有以下三种: add、sync 和 query,各自的输入格式如下:
-
addelement: 表示这是一个添加操作,将元素 element添加到队列中;
-
syncfollowerid: 表示这是一个同步操作,followerid号副节点会从主节点中同步下一个自己缺失的元素;
-
query: 查询操作,询问当前分布式队列中有多少个元素具有可见性。
输出格式
对于每一个 query 操作,输出一行,包含一个整数表示答案。
样例输入
3
add 1
add 2
query
add 1
sync 1
sync 1
sync 2
query
sync 1
query
sync 2
sync 2
sync 1
query
样例输出
0
1
1
3
样例说明
执行到第一个 query 时,队列内容如下:
0: [1,2]
1: []
2: []
两个副节点中都无元素,因此答案为 0。
执行到第二个 query 时,队列内容如下:
0: [1,2,1]
1: [1,2]
2: [1]
只有下标为 0 的元素被所有节点同步,因此答案为 1 。
执行到第三个 query 时,队列内容如下:
0: [1,2,1]
1: [1,2,1]
2: [1]
只有下标为 0 的元素被所有节点同步,因此答案为 1。
执行到第四个 query时,队列内容如下:
0: [1,2,1]
1: [1,2,1]
2: [1,2,1]
三个元素都被所有节点同步,因此答案为 3。
评测用例规模与约定
对于 30% 的评测用例: 1≤输入的操作数 ≤100。
对于 100% 的评测用例: 1≤followerid<N≤2000,1≤N≤10,1≤followerid<N
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();int a[] = new int[n+1];while (scan.hasNext()) {String s = scan.next();if (s.equals("add")) {int x = scan.nextInt();a[0]++;} else if (s.equals("sync")) {int x = scan.nextInt();a[x] = Math.min(a[0], a[x] + 1);} else {int min = a[0];for (int i = 0; i < n; i++) {min = Math.min(min, a[i]);}System.out.println(min);}}}
}
三、填空题
3.1报数游戏
我是补题链接点我跳转写题
问题描述
小蓝和朋友们在玩一个报数游戏。由于今年是 20242024 年,他们决定要从小到大轮流报出是 2020 或 2424 倍数的正整数。前 1010 个被报出的数是:20,24,40,48,60,72,80,96,100,12020,24,40,48,60,72,80,96,100,120。请问第 202420242024202420242024 个被报出的数是多少?
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println(202420242024l/2*24);scan.close();}
}
3.2 类斐波那契循环数
这题目贴出来公式有问题,请跳转写原题
我是补题链接点我跳转写题
问题描述
对于一个有 n 位的十进制数 N=d1d2d3…可以生成一个类斐波那契数列S,数列 S 的前 n 个数为:
{S1=d1,S2=d2,S3=d3,…,Sn=dn}
数列 SS 的第 k(k>n)个数为:
Si=k−n∑k−1Si
如果这个数 N 会出现在对应的类斐波那契数列 S 中,那么 N 就是一个类斐波那契循环数。
例如对于 197,对应的数列 S 为:
{1,9,7,17,33,57,107,197,…}
197 出现在 S 中,所以 197是一个类斐波那契循环数。
请问在 0 至 107中,最大的类斐波那契循环数是多少?
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
import java.util.ArrayDeque;
import java.util.Scanner;public class Main {static ArrayDeque<Integer> deque = new ArrayDeque<>();public static void main(String[] args) {Scanner sc = new Scanner(System.in);for (int i = 10000000; i >= 197; i--) {if (check(i)) {System.out.println(i);break;}deque.clear();}sc.close();}public static boolean check(int n) {int sum = 0, x = n;while (x > 0) {int t = x % 10;if (t != 0) {deque.addFirst(t);}sum += t;x /= 10;}if (deque.size() == 1) return false;deque.addLast(sum);while (!deque.isEmpty() && sum < n) {sum = sum * 2 - deque.pollFirst();deque.addLast(sum);}return sum == n;}
}
3.3 互质
我是补题链接点我跳转写题
问题描述
请计算在 [1,2023的2023次方] 范围内有多少个整数与 2023 互质。由于结果可能很大,你只需要输出对 109+7取模之后的结果。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
import java.util.Scanner;public class Main {static final int MOD = 1000000007;public static void main(String[] args) {long pow = fastPow(2023, 2022, MOD);long result = (pow * 1632) % MOD;System.out.println(result);}public static long fastPow(long base, long exp, long mod) {long result = 1;base %= mod; while (exp > 0) {if ((exp & 1) == 1) {result = (result * base) % mod;}base = (base * base) % mod;exp >>= 1;}return result;}
}
相关文章:
新手蓝桥杯冲击国一练习题单(四)
2025蓝桥杯省赛已结束,接下来是冲击国赛的时间 此题单为算法基础精选题单,包含蓝桥杯常考考点以及各种经典算法,可以帮助你打牢基础,查漏补缺。 本题单目标是冲击蓝桥杯省一国一,团体程序天梯赛个人国三、XCPC区域赛铜…...
PyTorch深度学习框架60天进阶学习计划 - 第45天:神经架构搜索(一)
PyTorch深度学习框架60天进阶学习计划 - 第45天:神经架构搜索(一) 第一部分:详解DARTS的可微分搜索空间 大家好!欢迎来到我们PyTorch深度学习框架进阶学习计划的第45天。今天我们将深入探讨神经架构搜索(Neural Arch…...
【java 13天进阶Day04】常用API、正则表达式,泛型、Collection集合API
Math类的使用。 Math用于做数学运算。Math类中的方法全部是静态方法,直接用类名调用即可。方法: public static int abs(int a) 获取参数a的绝对值public static double ceil(double a) 向上取整public static double floor(double a) 向下取整public s…...
leetcode 309. Best Time to Buy and Sell Stock with Cooldown
目录 题目描述 第一步,明确并理解dp数组及下标的含义 第二步,分析并理解递推公式 1.求dp[i][0] 2.求dp[i][1] 3.求dp[i][2] 第三步,理解dp数组如何初始化 第四步,理解遍历顺序 代码 题目描述 这道题与第122题的区别就是卖…...
RAG 实战|用 StarRocks + DeepSeek 构建智能问答与企业知识库
文章作者: 石强,镜舟科技解决方案架构师 赵恒,StarRocks TSC Member 👉 加入 StarRocks x AI 技术讨论社区 https://mp.weixin.qq.com/s/61WKxjHiB-pIwdItbRPnPA RAG 和向量索引简介 RAG(Retrieval-Augmented Gen…...
Java拼团项目
一些记录 环境配置 首先是把配置安装好,jdk1.8,maven3.8.8,docker,idea,脚手架 然后创建工程,通过小傅哥的脚手架从远程把一些包,依赖拉过来 然后在gitcode上边创建仓库,把代码提交…...
力扣每日打卡 2364. 统计坏数对的数目 (中等)
力扣 2364. 统计坏数对的数目 中等 前言一、题目内容二、解题方法1. 哈希函数12. 哈希函数22.官方题解2.1 方法一:使用 sqrt 函数 前言 这是刷算法题的第十四天,用到的语言是JS 题目:力扣 2364. 统计坏数对的数目 (中等) 一、题目内容 给你…...
R语言之.rdata文件保存及加载
在 R 中,.rdata 文件是通过 save() 函数创建的。 使用 save() 函数可以将一个或多个 R 对象保存到 .rdata 文件中。使用 load() 函数可以将 .rdata 文件中的对象恢复到当前工作环境中。 1.创建并保存对象到.rdata 假设有一个基于 iris 数据集训练的线性回归模型&a…...
神经网络优化 - 小批量梯度下降之批量大小的选择
上一博文学习了小批量梯度下降在神经网络优化中的应用: 神经网络优化 - 小批量梯度下降-CSDN博客 在小批量梯度下降法中,批量大小(Batch Size)对网络优化的影响也非常大,本文我们来学习如何选择小批量梯度下降的批量大小。 一、批量大小的…...
开源AI守护每一杯------奶茶咖啡店视频安全系统的未来之力
连锁饮品奶茶咖啡店视频安全系统以开源AI技术为引擎,将后厨管理从“被动查漏”升级为“主动防控”,让消费者从“担心卫生”变为“放心下单”。 解决方案亮点:技术驱动,全面防护 1. 实时监控与AI识别:秒级捕捉隐患 亮…...
音视频元素
目录 HTMLMediaElement网络状态 (networkState)就绪状态 (readyState)错误代码 (error.code) video属性方法事件 audio HTMLMediaElement HTMLMediaElement 是 HTML5 中 和 元素的基类,定义了它们共享的属性、方法和事件。无论你使用的是音频还是视频元素࿰…...
音视频小白系统入门课-2
本系列笔记为博主学习李超老师课程的课堂笔记,仅供参阅 课程传送门:音视频小白系统入门课 音视频基础ffmpeg原理 往期课程笔记传送门: 音视频小白系统入门笔记-0音视频小白系统入门笔记-1 课程实践代码仓库:传送门 音视频编解…...
时序逻辑电路——序列检测器
文章目录 一、序列检测二、牛客真题1. 输入序列连续的序列检测(输入连续、重叠、不含无关项、串行输入)写法一:移位寄存器写法二:Moore状态机写法三:Mealy状态机 一、序列检测 序列检测器指的就是将一个指定的序列&…...
#systemverilog# 进程控制问题#(八)关于#0 问题的使用(三)
今天,我们继续研究一下上一节讨论的问题。其实,还有一个小问题,我们来探讨一下。 `timescale 1ns/10psmodule tb_top(); reg clk; reg reset;initial begin reset = 0; #10 reset = 1; #15 reset = 0; #50 $finish; endinitial beginfor(int i = 0; i < 4 ; i++)fork #…...
k8s低版本1.15安装prometheus+grafana进行Spring boot数据采集
目录 一、背景: 二、实施过程 1).安装地址:https://github.com/prometheus-operator/kube-prometheus 2).安装方式两种, 3).安装Prometheus需要对照k8s集群版本。 4).拉去prometheus 5).导…...
Spring-Ioc容器的加载过程?
大家好,我是锋哥。今天分享关于【SpringIoC的实现机制是什么?】面试题。希望对大家有帮助; Spring-Ioc容器的加载过程? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring IoC容器的加载过程是指在应用启动时&…...
kaamel Privacy agent:AI赋能的隐私保护技术解决方案
智能隐私合规解决方案 在当今数字经济环境下,有效的隐私合规已成为企业运营的基础要求。全球范围内已有超过120项隐私法规生效,这对企业的数据处理流程提出了严峻挑战。kaamel Privacy agent作为专门为隐私合规领域设计的AI引擎,通过自动化技…...
从零到上线!AI生成SpringBoot项目脚手架实战(含K8s+Docker配置)
在 Java 开发领域,搭建 Spring Boot 项目脚手架是一项耗时且繁琐的工作。传统方式下,开发者需要手动配置各种依赖、编写基础代码,过程中稍有疏忽就可能导致配置错误,影响开发进度。如今,随着 AI 技术的迅猛发展,飞算 JavaAI 的出现为开发者带来了全新解决方案,让自动生成 Sprin…...
VueRouter笔记
定义路由 import { createMemoryHistory, createRoute } from vue-router; import MyView1 from ./MyView1.vue; import MyView2 from ./MyView2.vue;const routes [{ path: /1, component: MyView1 },{ path: /2, component: MyView2 } ];const router createRouter({histo…...
vue3 Element-plus修改内置样式复现代码
笔者在修改Element-plus的内置样式时,遇到一点挫折,现提供需求场景与解决方案。 一、实现(1)透明弹窗可拖拽,且不影响点击弹窗外内容;(2)弹窗内置表格,表格需修改样式颜色…...
easyui进度条
简单打开和关闭 // 展示进度条 $.messager.progress({title: 请稍候,msg: 系统处理中...,text: 0%});//关闭进度条 $.messager.progress(close); easyui 普通提示 <!DOCTYPE html> <html> <head><meta charset"UTF-8">&l…...
vcpkg缓存问题研究
vcpkg缓存问题研究 问题描述解决方案官网给出的方案其实并不是大多数人语境中的“清除缓存”实际解决方案 问题描述 使用vcpkg管理c的库的时候,vcpkg会在c盘某些地方缓存下载的库,如果安装的库过多,这个缓存文件夹会过大占用磁盘空间&#x…...
优化WAV音频文件
优化 WAV 音频文件通常涉及 减小文件体积、提升音质 或 适配特定用途(如流媒体、广播等)。以下是分场景的优化方法,涵盖工具和操作步骤: 一、减小文件体积(无损/有损压缩) 1. 无损压缩 转换格式࿱…...
系统架构设计师:流水线技术相关知识点、记忆卡片、多同类型练习题、答案与解析
题目: 流水线技术中,若某流水线分为5段,每段执行时间为Δt,则执行100条指令的总时间为( ) A. 100Δt B. 104Δt C. 500Δt D. 505Δt 答案:B 解析:流水线总时间(nk-1)Δt&#…...
test ssl java
// 文件名:SslUtilsTest.java// 包路径: import static org.junit.Assert.*; import static org.mockito.Mockito.*; import java.io.InputStream; import java.security.KeyStore; import javax.net.ssl.SSLContext; import org.apache.hc.client5…...
【系统分析师】-软件工程
考点汇总 考点详情 软件生存周期:可行性分析与项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护 软件能力成熟度模型 CMM:初始级,可重复级,已定义级…...
FFmpeg 硬核指南:从底层架构到播放器全链路开发实战 基础
目录 1.ffmpeg的基本组成2.播放器的API2.1 复用器阶段2.1.1 分配解复用上下文2.1.2 文件信息操作2.1.3 综合示例 2. 2 编解码部分2.2.1 分配解码器上下文2.2.2编解码操作2.2.3 综合示例 3 ffmpeg 内存模型3.1 基本概念3.2API 1.ffmpeg的基本组成 模块名称功能描述主要用途AVFo…...
2025MathorcupD题 短途运输货量预测及车辆调度问题 保姆级教程讲解|模型讲解
2025Mathorcup数学建模挑战赛(妈妈杯)D题保姆级分析完整思路代码数据教学 其中更详细的思路,各题目思路、代码、讲解视频、成品论文及其他相关内容,可以点击下方群名片哦!...
CSS 包含块
CSS 中的包含块(Containing Block)是一个非常重要的概念,它定义了元素在布局中的参考框架。元素的尺寸、位置和偏移量通常都是基于其包含块来计算的。理解包含块的概念对于掌握 CSS 布局至关重要。 1. 包含块的作用 定位元素:当…...
嵌入式设备网络的动态ID分配机制实现
文章目录 前言一、系统设计要点二、核心数据结构2.1 设备唯一标识(DeviceUID)2.2 节点信息(Node)2.3 节点管理器(NodeManager) 三、核心算法实现3.1 初始化与清理3.1.1 初始化节点管理器3.1.2 清理节点管理器 3.2 动态ID分配策略3.2.1 查找最小可用ID3.2.2 ID使用检查 3.3 心跳…...
(论文阅读)RNNoise 基于递归神经网络的噪声抑制库
RNNoise 是一个基于递归神经网络的噪声抑制库。 有关该算法的描述见以下论文: J.-M. Valin, A Hybrid DSP/Deep Learning Approach to Real-Time Full-Band Speech Enhancement, Proceedings of IEEE Multimedia Signal Processing (MMSP) Workshop, arXiv:1709.08…...
Linux:线程概念与控制
✨✨所属专栏:Linux✨✨ ✨✨作者主页:嶔某✨✨ Linux:线程概念于控制 var code “d7e241ae-ed4d-475f-aa3d-8d78f873fdca” 概念 在一个程序里的一个执行路线就叫做线程thread。更准确一点:线程是“一个进程内部的控制序列” …...
双轮驱动能源革命:能源互联网与分布式能源赋能工厂能效跃迁
在全球能源结构深度转型与“双碳”目标的双重驱动下,工厂作为能源消耗的主力军,正站在节能变革的关键节点。能源互联网与分布式能源技术的融合发展,为工厂节能开辟了全新路径。塔能科技凭借前沿技术与创新实践,深度探索能源协同优…...
网络安全-Burp Suite基础篇
声明 本文主要用做技术分享,所有内容仅供参考。任何使用或者依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。 1 Burp Suite功能介绍 1.1 Burp Suite 简介 Burp Suite 是一款极为强大且广受欢迎的集成化 …...
从人工到智能:外呼系统如何重构企业效率新生态
在数字化转型的浪潮中,智能外呼系统正从边缘辅助工具演变为企业效率革命的核心引擎。根据Gartner最新调研数据,部署AI外呼系统的企业客服效率平均提升68%,销售线索转化率增长42%。但在这场技术驱动的变革中,真正决定成败的往往不是…...
折扣电影票api对接详细指南,如何对接?
以下是折扣电影票 API 对接的一般指南: 对接前准备 明确需求:确定对接的目的和所需功能,如电影信息查询、场次查询、座位预订、支付等。明确支持的数据字段和业务流程。选择 API 服务提供商:选择技术成熟、服务稳定、覆盖范围广的…...
初识Redis · 客户端“Hello world“
目录 前言: 环境配置 Hello world 前言: 前文我们已经介绍了Redis的不常见的五种数据类型,并且补充了几个渐进式命令和数据库管理命令等,最后简单认识了一下RESP协议,但是老实说,我们只能算是知道了这个…...
51单片机实验一:点亮led灯
目录 一、实验环境与实验器材 二、实验内容及实验步骤 1.用keil 软件创建工程,C文件编写程序,编译生成hex文件编辑 2.用STC烧写hex文件,点亮第一个LED灯 3.使用法2,点除第一个以外的LED灯 一、实验环境与实验器材 环境&am…...
基于WOA鲸鱼优化的NARMAX模型参数辨识算法MATLAB仿真,对比PSO优化算法
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 NARMAX模型定义 4.2 鲸鱼优化算法WOA原理 4.3 粒子群优化算法PSO原理 5.完整程序 1.程序功能描述 基于WOA鲸鱼优化的NARMAX模型参数辨识算法MATLAB仿真,对比PSO优化算法。分别通过WOA…...
AWS上构建基于自然语言的数值和符号计算系统
我想要实现一个通过使用C#、Semantic Kernel库、OpenAI GPT 4的API和以下使用C#开源库MathNet实现通过中文自然语言提示词中包含LATEX代码输入到系统,通过以下符号和数值计算和其它符号和数值计算程序输出计算结果和必要步骤的应用,这样的数学计算使用程序直接产生结果,可以…...
2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(三级)真题
青少年软件编程(Python)等级考试试卷(三级) 分数:100 题数:38 答案解析:https://blog.csdn.net/qq_33897084/article/details/147341388 一、单选题(共25题,共50分) 1. 学校进行体…...
校平机:精密制造的“材料雕刻家“
在液晶面板生产线的无尘车间里,一片薄如蝉翼的玻璃基板正经历纳米级的形态修正;在新能源电池极片生产线上,铜箔以每秒5米的速度穿越精密辊系,完成微米级的平整蜕变。这些现代工业的"毫米级魔术",都离不开一台…...
FPGA HR Bank如何支持ODELAY问题分析
目录 1.ODELAY简单介绍 2.IODELAY 的特性 3.IODELAY 的 资源支持的管脚 4.HR bank如何支持ODELAY固定延迟 1.ODELAY简单介绍 FPGA 中的 IODELAY(Input/Output Delay),这是 Xilinx(现 AMD)FPGA 中一种用于精确控制输入/输出信号时序延迟的硬件资源。以下是关于 IODELAY…...
深入解析C++驱动开发实战:优化高效稳定的驱动应用
深入解析C驱动开发实战:优化高效稳定的驱动应用 在现代计算机系统中,驱动程序(Driver)扮演着至关重要的角色,作为操作系统与硬件设备之间的桥梁,驱动程序负责管理和控制硬件资源,确保系统的稳定…...
高级java每日一道面试题-2025年4月13日-微服务篇[Nacos篇]-Nacos如何处理网络分区情况下的服务可用性问题?
如果有遗漏,评论区告诉我进行补充 面试官: Nacos如何处理网络分区情况下的服务可用性问题? 我回答: 在讨论 Nacos 如何处理网络分区情况下的服务可用性问题时,我们需要深入理解 CAP 理论以及 Nacos 在这方面的设计选择。Nacos 允许用户根据具体的应用…...
07_Docker 资源限制
Docker 容器做资源限制,是为了不让某个容器抢光 CPU、内存等主机资源,保证所有容器都能稳定运行,还能避免宿主机资源被耗尽,让资源利用更高效,也方便管理和满足服务的性能要求。 监控容器资源使用情况 docker stats …...
Flutter Notes | 我用到的一些插件整理
Flutter开发必备插件推荐与iOS上架工具分享 前言 一个项目的开始和结束,总会遇到很多意料之外的东西。大神和菜鸟的区别,个人感觉更多的是大神花费了很多私下时间去了解每个问题的根本是什么,而我这小菜鸟,仅仅网上浪一圈&#…...
WordPress自定义页面与文章:打造独特网站风格的进阶指南
文章目录 引言一、理解WordPress页面与文章的区别二、主题与模板层级:自定义的基础三、自定义页面模板:打造专属页面风格四、自定义文章模板:打造个性化文章呈现五、使用自定义字段和元数据:增强内容灵活性六、利用WordPress钩子&…...
golang channel源码
解析 数据结构 hchan:channel 数据结构 qcount:当前 channel 中存在多少个元素; dataqsize: 当前 channel 能存放的元素容量; buf:channel 中用于存放元素的环形缓冲区; elemsize:channel 元素…...
麒麟操作系统漏洞修复保姆级教程弱(一)算法漏洞修复
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情 目录 一、相关问题 二、建议修复方法 修复方案(方案一和方案二是错误示范,干货在方案三) 方案一、首先我想按照第一步,将OpenSSH升级解决这一漏洞…...