10304 平面域著色
時間限制:1000ms 記憶體限制:1000k
提交次數:188 通過次數:53
題型: 程式設計題 語言: g++;gcc;vc
description
平面上有一點p,它是n個域d1、d2、……,dn的共同交點,
現取k種顏色對這n個域進行著色,要求相鄰兩個域著的顏色不同,求著色方案數。
這裡,2<=n<=10,1<=k<=9。
輸入格式
輸入:輸入兩個值:n和k。n為域的個數,k為顏色數
輸出格式
輸出:對n個域著色的方案數
如輸入3 3
輸出6若不存在可能的著色方案,輸出0。
輸入樣例
4 3輸出樣例
18提示
當對如圖的n個扇形域著色時,當n>=4時,都分為如下兩種情況考慮:
1)d1和dn-1同色
2)d1和dn-1不同色
當n>=4時,設an表示n個域用k種色的著色方案數(若可以著色的話):
(1)若d1與dn-1顏色相同,則dn有k-1種選擇
(2)若d1與dn-1顏色不同,則dn有k-2種選擇
當n>=4時則有: an=(k-2)an-1+(k-1)an-2
特別地有: a1=k, a2=k(k-1), a3=k(k-1)*(k-2)
為何此處的遞推公式要求n>=4呢?因為只有n>=4時,
d1和dn-1才不相鄰,上面的遞推才有效。
這題還得注意著色數為0的情況,即不能按要求著色。
當n=1時,只要k>=1,都可著色。
當n為 >=3的奇數,k須》=3,當1<=k<3(即k=1或2),不能著色。
當n為偶數時,只要k>=2,都可著色,若k=1,不能著色。
作者 zhengchan
version: 1
沒啥好說的,按著上面的提示照打。
#include
using
namespace std;
intpaint
(int n,
int k)
;int
main()
}if(n %2==
0)} cout<}int
paint
(int n,
int k)
}
SCAU OJ題 8601 最大長方體問題
時間限制 1000ms 記憶體限制 1000k 提交次數 0 通過次數 0 語言 not limited 描述乙個長,寬,高分別是m,n,p的長方體被分割成mnp個小立方體。每個小立方體內含乙個整數。試著設計乙個演算法,計算所給長方體的最大子長方體。子長方體的大小由它內部所含所有整數之和確定。約定 ...
平面解析幾何又一題
來自網路的一道題。如圖綠色部分,a ob是等腰直角三角形,o 0,0 為座標原點,a 4,0 b 0,4 m 是ab 中點。e 在 x軸正半軸上,f ob上。emf 45o。求使得 of ef 6 的e x,0 點橫座標 x 之值。看到有人用新增紅色輔助線的方法證明了一通,無視of ef 6就得到了...
折線分割平面 HDU 2050(數論 規律題)
我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c 行資料,每行包含乙個整數n 0output 對於每個測...