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