幾道構造小題

2021-09-11 18:43:41 字數 1120 閱讀 4403

在 nn 的網格上,由邊界某個格仔出發四連通經過所有格仔一次且僅一次再回到邊界上,要求拐彎次數至少有 n(n-1)-1 次。

看起來無從下手。不知從何下手的題目一般有兩種解決辦法:

1.考慮能否縮小範圍,遞迴處理。

2.這道題顯然是第一種。因為我們可以沿著左邊緣和下邊緣兩列走一圈,遞迴套用 n-2 的構造方案。

這道題目啟發我們,很多時候遞迴構造是乙個不錯的選擇。

給定乙個度數序列,詢問是否存在乙個簡單圖滿足這個序列。

構造方法:按度數從大到小排序,貪心地向最大的若干個點連邊。

有解當且僅當:

考慮乙個貪心:從低向高擺放,每次選擇最多的顏色填最後一行。但是這樣其實是不對的。比如 1,4,5。

那怎麼辦呢?注意到當 n 較大(>3)時,最多的顏色肯定大於等於當前要放的數量,問題在於有時候有多種選擇。這時候我們稱這一行為可選擇的,先隨便放一種顏色。放到不能放的時候,此時只有兩種情況:(1,1,1)/(2,2,2),我們找到最靠上的乙個可選擇的行k,那麼k-1一定是不可選擇的,而且和它顏色不同。我們把這一行的顏色變一下,那麼就會變得有解 (1,2,3)/(0,1,2)。

我們使用了調整法,當有多個選擇的時候先隨便選擇乙個,等到後面再決定選擇哪個。

構造題考驗人類智慧型。很多時候都是構造簡單的結構,組成最後的構造。構造題一般是構造一些特殊的東西,不太可能根據輸入的不同構造完全不同的東西(太毒瘤了)。

構造 ×× 數量,可以考慮進製拆分。問題複雜,可以考慮把問題規約到小範圍。打表找規律。

素數的幾道小題(c語言版本)

includeint main if i n printf this is not a prime.else printf this is a prime.return 0 include includeint main if i k printf this is not a prime.else ...

mysql之常見函式 幾道小題目

mysql之常見函式 幾道小題目 我就直接po 了 1.顯示系統時間 注 日期 時間 select now as 當前時間 2.查詢員工號,姓名,工資,以及工資提高百分之20 後的結果 new salary select employee id,last name,salary,salary 1 0...

王道上幾道鍊錶的小題(上)

void del x linklist l,elemtype x if l data x else 普通方式 void del x linklist l,elemtype x else 尾插法,值不為x的結點尾插建表,值為x的結點釋放 void del x linklist l,elemtype x...