時間限制:C/C++ 1秒,其餘語言 2秒
空間限制:C/C++ 262144K,其餘語言 524288K
64bit IO Format: %lldjava
在牛牛所在的世界,鏈表是一種二叉樹。
這是牛牛第一次見到鏈表樹,他感到十分好奇,他提出了若干個問題,每次詢問點x到根的路徑上全部點分別是什麼,你須要按照深度從小到大給出。數組
本題爲核心代碼模式,代碼框中預設代碼已經指定好類名、方法名、參數名,請勿修改或從新命名,直接返回值便可。測試
{1, 2, 3, 4, 5, 6, 7}, [1, 2, 3, 4, 5, 6, 7]
[{1}, {1, 2}, {1, 3}, {1, 2, 4}, {1, 2, 5}, {1, 3, 6}, {1, 3, 7}]
點1到根的路徑上的個分別爲{1} 點2到根的路徑上的個分別爲{1, 2} 點3到根的路徑上的個分別爲{1, 3} 點4到根的路徑上的個分別爲{1, 2, 4} 點5到根的路徑上的個分別爲{1, 2, 5} 點6到根的路徑上的個分別爲{1, 3, 6} 點7到根的路徑上的個分別爲{1, 3, 7}
設 \(n\) 爲樹的點數,保證樹的編號爲 \(1\)~\(n\) 的整數且互不相同
設 \(m\) 爲問題個數
\(2 <= n <= 10^3\)
\(0 <= m <= 10^3\)this
/* * class ListNode { * int val; * ListNode next = null; * * public ListNode(int val) { * this.val = val; * } * } * / /* class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * * public TreeNode(int val) { * this.val = val; * } * } */ class Solution { /** * 代碼中的類名、方法名、參數名已經指定,請勿修改,直接返回方法規定的值便可 * 你須要返回m個指針,第i個指針指向一條鏈,表示第i個問題的答案 * * @param root TreeNode類 指向鏈表樹的根 * @param b int整型一維數組 表示每一個問題是什麼 * @return ListNode類一維數組 */ public ListNode[] solve(TreeNode root, int[] b) { // write code here } }
時間限制:C/C++ 1秒,其餘語言 2秒
空間限制:C/C++ 262144K,其餘語言 524288K
64bit IO Format: %lldspa
如今有一個數字 \(n\) ,你能夠經過下面三種變換,使得這個數字變成 \(0\) ,如今想知道最少須要變換幾回
第一種變換:\(n = n - 1\)
第二種變換:若 \(n\) 是偶數,則 \(n = n / 2\)
第三種變換:若 \(n\) 是\(3\)的倍數,\(n = n / 3\).指針
本題爲ACM模式,請經過代碼實現題目,過程當中的輸入輸出請自行處理,處理方式參考題目輸入輸出描述或左側例題。code
輸入第一行一個整數 \(T\) ,表明有 \(T\) 組測試數據
接下來 \(T\) 行,每一行爲一個整數 \(n\) ,表明要變換的數。
\(1 <= T <= 100,1 <= n <= 2*10^9\)orm
對於每組測試數據,輸出一個答案表明最少須要變換的次數。blog
1 10
4
先執行第一種變換變成 \(9\) ,執行第三種變換變成 \(3\),執行第三種變換變成 \(1\),最後執行第一種變換變成 \(0\)it
時間限制:C/C++ 1秒,其餘語言 2秒
空間限制:C/C++ 262144K,其餘語言 524288K
64bit IO Format: %lld
小 \(K\) 有 \(n\) 個數組,而且他將數組標號爲 \(1\)~\(n\) ,每一個數組有若干個元素,如今他有 \(q\) 次詢問,每次詢問細節以下:
本題爲ACM模式,請經過代碼實現題目,過程當中的輸入輸出請自行處理,處理方式參考題目輸入輸出描述或左側例題。
第一行包含一個正整數 \(n\) \((1<=n<=10^5)\),表示有 \(n\) 個數組。
接下來 \(n\) 行,每一行包含:
第一個數首先給出一個正整數 \(m_i\) \((1<=m_i<=10^5)\) ,表示第 \(i\) 個數組的長度。後面的 \(m_i\) 個正整數 \(a_{i,j}\) \((1<=a_{i,j}<=10^9)\) ,表示第 \(i\) 個數組的第 \(j\) 個元素。
第 \(n+2\) 行包含一個正整數 \(q\) \((1<=q<=10^5)\) ,表示詢問的次數。
接下來 \(q\) 行,每一行包含:
首先給出一個正整數 \(p_i\) \((1<=p_i<=n)\) ,表示餘姚合併的 \(p_i\) 個數組得個數。
接下來 \(p_i\) 個正整數, \(b_{i,j}\) \((a<=b_{i,j}<=n)\) ,表示第 \(i\) 次詢問須要合併的第 \(j\) 個數組下標。
接下來給出一個正整數 \(k_i\) , \(k_i\) 比超過合併後數組的大小。
數據保證數組中元素總數小於等於 \(10^5\) ,詢問中的數組下標總數小於等於 \(10^5\) 。
對於每一次詢問,都須要輸出一行包含一個正整數,表示合併後的數組中的第 \(k\) 小元素。
2 1 2 2 1 3 2 1 1 1 2 1 2 2
2 2
第一行輸入爲 \(n\) ,表明 \(2\) 個數組
接了來 \(2\) 行表示有 \(2\) 個數組,分別爲數組 \(1\) 和數組 \(2\) ,數組 \(1\) 的元素爲 \(2\) ,數組 \(2\) 的元素爲 \(1\) 和 \(3\)
接下來的 \(2\) 表示詢問 \(2\) 次
詢問第 \(1\) 次須要合併的數組個數爲 \(1\) 個,也就是不須要合併,選中的數組爲 \(1\) ,數組 \(1\) 只有 \(1\) 個元素,是 \(2\) ,第 \(1\) 小的元素也就是 \(2\) ,輸出 \(2\)
詢問第 \(2\) 次須要合併的數字個數爲 \(2\) 個,須要合併,選中的數組爲 \(1\) 和 \(2\) ,數組 \(1\) 和數組 \(2\) 合併以後爲: \([2, 1, 3]\) ,第 \(2\) 小的元素也是 \(2\) ,輸出 \(2\)
5 1 1 2 2 3 3 5 10 6 4 4 58 2 1 5 1000000000 9 8 4 5 5 1 2 2 2 2 3 3 3 3 4 5 11 4 5 4 3 2 1 5 1 2 5 4 3 7
3 5 58 1 4
第一次詢問,只包含第二個數組,一共有 \(2\) 個數: \(2\) 和 \(3\) 。第 \(2\) 小的元素爲 \(3\) 。
第三次詢問,包含三個數組:第3、第四和第五,一共有 \(12\) 個數。其中第 \(11\) 小的元素爲 \(58\) 。
時間限制:C/C++ 1秒,其餘語言 2秒
空間限制:C/C++ 262144K,其餘語言 524288K
64bit IO Format: %lld
某公司年終共拿出 \(w\) 元,用於發放獎金(不須要用完)。公司共有 \(n\) 位員工(員工總數爲奇數),每位員工貢獻不一樣,發放獎金少於 \(x_i\) 元會讓他本身不滿意,多餘 \(y_i\) 元會讓其餘員工不滿意。如今想提出一種獎金髮放的方案,使得全部人都滿意,同時使得全部員工拿到獎金的中位數最大,求這個最大的中位數?
本題爲ACM模式,請經過代碼實現題目,過程當中的輸入輸出請自行處理,處理方式參考題目輸入輸出描述或左側例題。
第一行兩個正整數,員工數 \(n\) ,獎金總數 \(w\);接下來 \(n\) 行:
每行兩個正整數 ,每一個人的獎金下限 \(x_i\) 、獎金上限 \(y_i\) 。
一個正整數,最大的獎金中位數。
3 20 8 10 1 4 7 9
9
三人分別發放獎金 \(10\) 、\(1\) 、\(9\) 元,獎金中位數最大爲 \(9\) 。
\(1 <= n <= 10^5\)
\(1 <= w <= 10^14\)
\(1 <= x_i <= y_i <= 10^9\)
\(\sum^{}_{}{x_i} <= w <= \sum^{}_{}{y_i}\)
時間限制:C/C++ 1秒,其餘語言 2秒
空間限制:C/C++ 262144K,其餘語言 524288K
64bit IO Format: %lld
牛牛陪牛妹來到商場購物,許久沒有逛商場的牛妹像發了瘋似的挑選了起來。很快,牛妹挑選出了一共 \(n\) 件商品,爲了方便區別,給其編號爲 \(1, 2, …, n\) ,其中,第 \(i\) 件商品的價格爲 \(w_i\)
牛牛一算總額,驚人地發現,這些東西太貴了,若是所有買下的話,本身的所有身家就沒了。因而,牛牛找了個藉口說道:「今天銀行卡限額了,只能刷出整 \(m\) 倍數的金額,這些東西,可能……」
還沒等牛牛說完,牛妹就明白了牛牛的意思,因而,準備從這 \(n\) 件商品中挑選若干件,使其總額剛好爲 \(m\) 的整倍數。
牛牛在一旁盤算着,若是牛妹足夠聰明,在知足 \(m\) 的整倍數的條件下,她會挑出最大的商品總金額。
因此請你告訴牛牛,最壞的狀況下,此次購物以後,他的所有身家還能剩下多少。
本題爲ACM模式,請經過代碼實現題目,過程當中的輸入輸出請自行處理,處理方式參考題目輸入輸出描述或左側例題。
第一行輸入一個正整數 \(T\) \((1 <= T <= 10^5)\),表明測試數據的組數。
對於每組測試數據,第一次輸入一個正整數 \(n, m\) (\(1 <= n <= 10^5\); \(1<= m <= 100\)) ,依次表明牛妹第一次挑出的商品數量,以及牛牛編造的整 \(m\) 倍數金額。
題目保證,全部測試數據的 \(n\) 之和不會超過 \(10^6\).
對於每組測試數據,一行輸出一個整數表明答案。
2 3 3 3 6 9 3 5 9 6 3
0 3
第一組測試數據中,\(3 + 6 + 9 = 18\) ,是 \(3\) 的倍數,因此剛好花光牛牛的所有身家。
第二組測試數據中,要求總金額是 \(5\) 的備註,顯然,對牛妹來講,最高花費的組合爲 \(9 + 6 = 15\) ,此時,牛牛的所有身家還剩下 \(3\) .