2024第15届蓝桥杯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();
                }
            }
        }
    }
}

第三题 分布式队列

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

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);
            }
        }
    }
}


第四题 食堂

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

int sum1=总人数
int sum2=总座位数
if(sum1>sum2) print(sum2)
else print(sum1)

第五题 最优分组

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

第六题 星际旅行

​ 又是期望值,我的写法是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);

    }
}

第七题 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")

第八题 拼十字

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

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));
    }
}

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

  • 23
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 88
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 88
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值