第十一届蓝桥杯b组省赛真题解析

试题C:合并检测本题总分: 10分

[问题描述]

新冠疫惜由新冠病毒引起,最近在A国蔓延,为了尽快控制疫情, A国准备给大量民众进病毒核酸检测.

然而,用于检测的试剂盒紧缺。

为了解决这一困难,科学家想了一个办法:合井检测。即将从多个人(k个)采集的标本放到同一个试剂盒中进行检测。如果结果为阴性,则说明这k个人都是阴性,用一个试剂盘完成了k个人的检测。如果结果为阳性,则说明至少有一个人为阳性,需要将这k个人的样本全部重新独立检测(从理论上看,.如果检测萌k-1个人都是阴性可以推断出第k个人是阳性,但是在实际操作中不会利用此推断,而是将k个人独立检测),加上最开始的合并检测,一共使用了k+1个试剂盒完成了k个人的检测.

A国估计被测的民众的感染率大概是1%,呈均匀分布。请问k取多少能最节省试剂盒?

[答案提交]

这是一-道结果填空题,你只需要算出结果后提交即可。本题的结果为- -个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
答案 :10

package com.Test.Demo.第十一届蓝桥杯;

public class Main_C {
    public static void main(String[] args) {
        int min=999990;
        int ans=-1;
        for(int i=1;i<=100;i++){ //i个人一块测
            int temp;
            if(100%i!=0){
                temp = 100/i+i+1;
            }else{
                temp = 100/i+i;
            }
          if(min>temp){
              min=temp;
              ans=i;
          }
        }
        System.out.println(ans);
    }
}

第十一届蓝桥杯大要软件更省》Javm大学B组

试题H:字符串编码

时间限制: 1.0e内存限制: 512.0MB本题总分: 20 分

[问题描述]

小明发明了一种给由全大写字母组成的字符串编码的方法。对于每一个大写字母,小明将它转换成它在26个英文字母中序号,即A- LB-2…Z-26.

这样一个字符串就能被转化成-一个数字序列:

比如ABCXYZ + 123242526.

现在给定一个转换后的数字序列,小明想还原出原本的字符串。当然这样的还原有可能存在多个符合条件的字符串。小明希望找出其中字典序最大的字符串,

[输入格式]一个数字序列。

[输出格式]

一个只包含大写字母的字符串,代表答案

[样例输入]123242526

[样例输出]LCXYZ

[评测用例规模与约定]

对于20%的评利用例,输入的长度不超过20.对干所有评测用例,输入的长度不超过20000.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		String s = input.next();
		int len = s.length();
		char[] c = s.toCharArray();
		int i;
		for(i = 0; i < len-1; i++) {
			int a = c[i]-'0';
			int b = c[i+1]-'0';
			int ans = a*10+b;
			if(ans<27) {
				char ch = (char) (ans+64);
				System.out.print(ch);
				i++;
			}else {
				char ch = (char) (a+64);
				System.out.print(ch);
			}
		}
		if(i < len){
			char ch = (char) (c[i]-'0'+64);
			System.out.print(ch);
		}
	}

}

试题I: BST插入节点问题

时间限制: 1.08内存限制: 512.0MB本题总分: 25分

[问题描述]

给定一-棵包含N个节点的二又树,节点编号是1~N.其中i号节点具有权值w,并且这些节点的权值恰好形成了-棵排序二叉树 (BST).

现在给定一个节点编号K,小明想知道,在这N个权值以外,有多少个整敷X(即X不等于任何W)满足:给编号为K的节点增加一个权值为X的子节点,仍可以得到一棵BST.

例如在下图中,括号外的数字表示编号、括号内的数字表示权值。即编号1~4的节点权值依次是0、10、20、30.

1(10)

2(0)

3(20)

4(30)

如果K-1,那么答案为0.因为1号节点已经有左右子节点,不能再增加子节点了。

如果K=2,那么答案为无穷多。因为任何一个负数都可以作为2的左子节点。

如果K=3,那么答案为9.因为X= 12…19都可以作为3的左子节点。

[输入格式]

第一行包含2个整数N和K.

以下N行每行包含2个整数,其中第i行是编号为i的节点的父节点编号P和权值W.注意P-0表示1是根节点。

输入保证是一棵BST.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int n = input.nextInt();
		int k = input.nextInt();
		int a[] = new int[100100];
		int b[] = new int[100100];
		int vis[] = new int[100010];
		for(int i = 1; i <= n; i++) {
			a[i] = input.nextInt();
			b[i] = input.nextInt();
			vis[i] = a[i];
		}
		int cnt = 0;
		int ans = 0;
		for(int i = 1; i <= n; i++) {
			if(vis[i]==k) {
				cnt++;
				ans = b[i];
			}
		}
		if(cnt==2) System.out.print(0);
		else if(cnt==1) {
			ans = Math.abs(ans-b[k]);
			System.out.print(ans-1);
		}else System.out.print(-1);
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章