DP專題測試1 2019年5月1日
天平(balance.in/balance.out)
物理老師 YJ 有一個長桿天平,天平的兩臂長均為 15,將長桿看作 x 軸, 則平衡點在 0 位置處,負數位置在左臂上,正數位置在右臂上。長桿上有 n 個 位置有掛鉤可以掛秤砣。YJ 有 m 個秤砣,質量分別為 gi,每個掛鉤可以不掛也 可以掛任意個秤砣。YJ 想要知道,在使用所有秤砣的條件下,有多少種不同的 掛秤砣的方案,可以使得天平平衡?問題太過復雜,僅憑物理知識難以解決, 所以請你來幫助他。 天平的平衡條件是所有秤砣的位置*質量之和為 0。例如有質量為 2,3,4 的 秤砣分別掛在-3,-2,3 位置處,則 2*(-3) + 3*(-2) + 4*3 == 0,天平是平衡 的。
【輸入格式】
第一行兩個數 n,m。表示掛鉤的數目和秤砣的數目。 第二行 n 個不同且遞增的數,第 i 個數表示第 i 個掛鉤的位置,數的範圍 在[-15,15]內。 第三行 m 個不同且遞增的數,第 i 個數表示第 i 個秤砣的質量,數的範圍 在[1,25]內。
【輸出格式】 一個整數,代表能使得天平平衡的方案數。
【輸入樣例】 2 4
-2 3
3 4 5 8
【輸出樣例】 2
【樣例解釋】 方案 1: (-2)*(3+4+5) + 3*8 = 0 方案 2: (-2)*(4+8) + 3*(3+5) = 0
【數據規模】 10% 數據滿足 2≤n,m≤4。
100% 數據滿足 2≤n,m≤20。
3
山峰數(hill.in/hill.out)
山峰數是指數字排列中不存在山谷(先降後升)的數,例如 0,5,13,12321 都 是山峰數,101,1110000111 都不是山峰數。 現給出 n 個數,請依次判斷它們是否為山峰數,如果不是,輸出-1。如果 是,求出比它小的數中有多少個山峰數。
【輸入格式】
第一行一個數 n,表示詢問數目。 接下來 n 行,每一行一個數 x,表示詢問的數。
【輸出格式】 輸出有 n 行,x 如果不是山峰數,輸出-1。x 如果是山峰數,則輸出有多少 個比它小的山峰數。
【輸入樣例】 5
10
55
101
1000
1234321
【輸出樣例】 10
55
-1
715
94708
【數據規模】 20% 數據滿足 x ≤ 1e6。
100% 數據滿足 n ≤ 10, x ≤ 1e60
4
粉刷匠 2(draw.in/draw.out)
有一個 4*N 的木板需要粉刷,第 i 行 j 列的顏色記為 A(i, j)。 有 256 種顏色,記為 0..255,為了使得粉刷比較好看,粉刷需要滿足如下 要求: 1. A(x,y) >= A(x,y-1) 2. 有一些指定的(x1, y1)和(x2, y2),要求 A(x1, y1) = A(x2, y2) 請問有多少種滿足要求的粉刷方式?輸出答案的最後 5 位即可。
【輸入格式】 第一行兩個數 n, m,表示木板的長度,和指定規則的條目個數。 接下來 m 行,每行四個數 x1,y1,x2,y1,此規則表示 A(x1, y1) 需要等於 A(x2, y2) 。 【輸出格式】 一個整數,表示答案的末 5 位。
【輸入樣例 1】 1 0
【輸出樣例 1】 67296
【輸入樣例 2】 1 3
1 1 2 1
1 1 3 1
4 1 3 1
【輸出樣例 2】 00256
【提示】 輸出可以使用%05d 輸出。
【數據規模】 30% 數據滿足 n ≤ 3,m = 0
100% 數據滿足 1 ≤ n ≤ 15,0 ≤ M ≤ 100,X1,X2≤4,Y1,Y2≤n
5
棋盤(knight.in/knight.out)
有一個 N*M 的棋盤,要在上面擺上 knight,每個格子可以放至多一個 knight。
knight 的攻擊範圍如下圖:
所有 knight 不能互相攻擊,請問總共有多少可行的擺法?答案對 1000000007 取模。
【輸入格式】 第一行個數 t,表示測試的組數。 接下來 t 組,每組兩個整數,n 和 m。
【輸出格式】 一共 t 行,第 i 行表示第 i 組的答案。
【輸入樣例】 4
1 2
2 2
3 2
3 31415926
【輸出樣例】 4
16
36
933912086
【數據規模】 70% 數據滿足 m≤100。
100% 數據滿足 t≤10, n≤3, m≤109。
DP專題測試1 2019年5月1日