2014编程之美资格赛
2014?編程之美挑戰(zhàn)賽 --- 資格賽真題
題目1 : 同構(gòu)
時間限制:2000ms 單點時限:1000ms 內(nèi)存限制:256MB描述
給定2個樹A和B,保證A的節(jié)點個數(shù)>=B的節(jié)點個數(shù)。
現(xiàn)在你需要對樹A的邊進(jìn)行二染色。
一個好的染色方案,指不存在一個樹A中的連通塊,同時滿足以下2個條件
1. 其中只有同色的邊
2. 和B同構(gòu)。兩個樹同構(gòu)是指,存在一個一一映射(既是單射又是滿射),將樹B的各節(jié)點映射到不同的樹A的節(jié)點,使得原來在樹B中相鄰的點,在映射后,仍相鄰。
問是否存在一種好的染色方案。
輸入
第一行一個整數(shù)T (1<=T<=10),表示數(shù)據(jù)組數(shù)。
接下來是T組輸入數(shù)據(jù),測試數(shù)據(jù)之間沒有空行。
每組數(shù)據(jù)格式如下:
第一行一個整數(shù)N ,表示樹A的節(jié)點總數(shù)。
接下來N-1行,每行2個數(shù)a, b (1 <= a, b <= N)表示樹A的節(jié)點a和b之間有一條邊。
接下來一行,一個整數(shù)M(1 <= M <= N),表示樹B的節(jié)點總數(shù)。
接下來M-1行,每行2個數(shù)a, b (1 <= a, b <= M)表示樹B的節(jié)點a和b之間有一條邊。
輸出
對每組數(shù)據(jù),先輸出“Case x: ”,x表示是第幾組數(shù)據(jù),然后接“YES”/“NO”,表示是否存在所求的染色方案。
數(shù)據(jù)范圍
小數(shù)據(jù):1 <= N <= 20
大數(shù)據(jù):1 <= N <= 1000000
樣例解釋
無論如何染色,只要從A中挑一條邊就行了。
題目2 : 大神與三位小伙伴
時間限制:2000ms 單點時限:1000ms 內(nèi)存限制:256MB描述
L國是一個有著優(yōu)美景色且物產(chǎn)豐富的國家,很多人都喜歡來這里旅游并且喜歡帶走一些紀(jì)念品,大神同學(xué)也不例外。距離開L國的時間越來越近了,大神同學(xué)正在煩惱給她可愛的小伙伴們帶什么紀(jì)念品好,現(xiàn)在擺在大神同學(xué)面前的有三類紀(jì)念品A, B, C可以選擇,每類紀(jì)念品各有N種。其中種類為A_i, B_i, C_i的紀(jì)念品價值均為i, 且分別有N+1-i個剩余。現(xiàn)在大神同學(xué)希望在三類紀(jì)念品中各挑選一件然后贈送給她的三名可愛的小伙伴,但是她又不希望恰好挑出來兩件價值相同的紀(jì)念品,因為這樣拿到相同價值紀(jì)念品的兩位小伙伴就會認(rèn)為大神同學(xué)偏袒另一位小伙伴而不理睬她超過一星期。現(xiàn)在,大神同學(xué)希望你買到的三件紀(jì)念品能讓三位小伙伴都開心并且不和她鬧別扭,她想知道一共有多少種不同挑選的方法?
因為方案數(shù)可能非常大,大神同學(xué)希望知道挑選紀(jì)念品的方案數(shù)模10^9+7之后的答案。
輸入
第一行包括一個數(shù)T,表示數(shù)據(jù)的組數(shù)。
接下來包含T組數(shù)據(jù),每組數(shù)據(jù)一行,包括一個整數(shù)N。
輸出
對于每組數(shù)據(jù),輸出一行“Case x:?”,其中x表示每組數(shù)據(jù)的編號(從1開始),后接一個數(shù),表示模10^9+7后的選擇紀(jì)念品的方案數(shù)。
數(shù)據(jù)范圍
小數(shù)據(jù):
1<=T<=10
1<=N<=100
大數(shù)據(jù):
1<=T<=1000
1<=N<=10^18
樣例解釋
對于第二組數(shù)據(jù),合法的方案有以下幾種,(X,Y,Z)表示選擇了A類紀(jì)念品中價值為X的,B類紀(jì)念品中價值為Y的,C類紀(jì)念品中價值為Z的。
(1,1,1): 3*3*3=27種
(1,2,3): 3*2*1=6種
(1,3,2): 3*1*2=6種
(2,1,3): 2*3*1=6種
(2,2,2): 2*2*2=8種
(2,3,1): 2*1*3=6種
(3,1,2): 1*3*2=6種
(3,2,1): 1*2*3=6種
(3,3,3): 1*1*1=1種
一共27+6+6+6+8+6+6+6+1=72種選擇紀(jì)念品的方案
注意,如(1,1,2), (2,3,3), (3,1,3)都因為恰好選擇了兩件價值相同的紀(jì)念品,所以并不是一種符合要求的紀(jì)念品選擇方法。
題目3 : 格格取數(shù)
時間限制:2000ms 單點時限:1000ms 內(nèi)存限制:256MB描述
給你一個m x n (1 <= m, n <= 100)的矩陣A (0<=aij<=10000),要求在矩陣中選擇一些數(shù),要求每一行,每一列都至少選到了一個數(shù),使得選出的數(shù)的和盡量的小。
輸入
多組測試數(shù)據(jù)。首先是數(shù)據(jù)組數(shù)T
對于每組測試數(shù)據(jù),第1行是兩個正整數(shù)m, n,分別表示矩陣的行數(shù)和列數(shù)。
接下來的m行,每行n個整數(shù),之間用一個空格分隔,表示矩陣A的元素。
輸出
每組數(shù)據(jù)輸出一行,表示選出的數(shù)的和的最小值。
數(shù)據(jù)范圍
小數(shù)據(jù):1 <= m, n <= 5
大數(shù)據(jù):1 <= m, n <= 100
提交頁面:
總結(jié)
以上是生活随笔為你收集整理的2014编程之美资格赛的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Swing 学习小记
- 下一篇: 动态申请二维数组