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