当前位置:   article > 正文

2024第15届蓝桥杯javab组复盘_十五届蓝桥杯javab

十五届蓝桥杯javab

2024第15届蓝桥杯javab组复盘

第一题 报数

​ 纯暴力for循环,然后也知道给我4小时也跑不出来,所以不会做了

第二题 类斐波那契额循环数

考模拟,答案:7913837

5分到手

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);

        for(int i=(int)1e7;i>=1;i--)
        {
            Deque<Integer> deque=new ArrayDeque<>();
            int sum=0,a=i;
            while(a>0){
                int m=a%10;
                a/=10;
                sum+=m;
                deque.addFirst(m);
            }
            while(sum<=i){
                if(sum==i)
                {
                    System.out.println(i);
                    return;
                }else{
                    deque.add(sum);
                    sum*=2;
                    sum-=deque.poll();
                }
            }
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

第三题 分布式队列

​ 这题应该能过大部分样例吧

import java.util.Scanner;
public class Main3 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int a=0;
        int[] b=new int[n];
        while(true){
            String s=scanner.next();
            if(s.equals("add")){
                int val=scanner.nextInt();
                a++;
            }else if(s.equals("sync")){
                int val=scanner.nextInt();
                b[val]++;
            }else{
                int min=Integer.MAX_VALUE;
                for(int i=1;i<n;i++){
                    min=Math.min(min,b[i]);
                }
                System.out.println(min);
            }
        }
    }
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

第四题 食堂

​ 这题和去年的飞机降落有点像又不太像,总觉得太麻烦了我就没去多想,直接big胆骗分,下面是我的骗分伪代码(能过1个样例就满足了)

int sum1=总人数
int sum2=总座位数
if(sum1>sum2) print(sum2)
else print(sum1)
  • 1
  • 2
  • 3
  • 4

第五题 最优分组

​ 纯纯考数学题,数学期望?我直接不会,猜测答案区间范围直接输出打印

第六题 星际旅行

​ 又是期望值,我的写法是floyd算法,一个传送门的距离算作1,算出每个点之间的最短传送门距离就好做了,这应该是正解?

import java.util.Arrays;
import java.util.Scanner;
public class Main6 {

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int m=scanner.nextInt();
        int q=scanner.nextInt();
        int[][] map=new int[n+1][n+1];
        for(int i=1;i<=n;i++)
        {
            Arrays.fill(map[i],Integer.MAX_VALUE/3);//除以3避免溢出;
        }
        for(int i=0;i<m;i++)
        {
            int a=scanner.nextInt();
            int b=scanner.nextInt();
            map[a][b]=1;
            map[b][a]=1;
        }

        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                for(int k=1;k<=n;k++)
                {
                    map[i][j]=Math.min(map[i][j],map[i][k]+map[k][j]);
                }
            }
        }
        double res=0;
        for(int i=0;i<q;i++)
        {
            int begin=scanner.nextInt();
            int door=scanner.nextInt();
            int s=1;//包含起点
            for(int j=1;j<=n;j++)
            {
                if(map[begin][j]<=door){
                    s++;
                }
            }
            res+=s;
        }
        res/=q;
        System.out.printf("%.2f",res);

    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

第七题 LITS游戏

这题是个dfs题,当时感觉条件太多了,一看就不会,采取了骗分的方法,因为t<=10,然后答案只会是Yes和No,所以我觉得可以骗,下面是骗分伪代码

int sum=矩阵1的总数
int sum2=16//4种字母的面积
if(sum<sum2)
	print("No")
else
	Random random=new Random()
	int a=random.nextInt(2)
	if(a==1)
		print("Yes")
	else print("No")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

第八题 拼十字

​ 最后一题比前面简单,幸好没死磕前面不会的题

import java.util.Scanner;
public class Main8 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int[] l=new int[n];
        int[] w=new int[n];
        int[] c=new int[n];
        for(int i=0;i<n;i++)
        {
            l[i]=scanner.nextInt();
            w[i]=scanner.nextInt();
            c[i]=scanner.nextInt();
        }
        int res=0;
        for(int i=0;i<n-1;i++)
        {
            for(int j=i+1;j<n;j++)
            {
                if(c[i]!=c[j] && ((l[i]> l[j] && w[i]<w[j]) || (l[i]<l[j] && w[i]>w[j]))){
                    res++;
                    res%=(1e9+7);
                }
            }
        }
        System.out.println(res%(1e9+7));
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

总的来说完整做了3题加一道填空,想问一下大家,我这水平能省一吗

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/870288
推荐阅读
相关标签
  

闽ICP备14008679号