第十一屆藍橋杯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);
	}

}

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