BZOJ 1600 建造柵欄

2021-07-11 16:13:29 字數 1007 閱讀 7629

**

usaco 2008 資格賽

勤奮的farmer john想要建造乙個四面的柵欄來關住牛們。他有一塊長為n(4<=n<=2500)的木板,他想把這塊本板切成4塊。這四塊小木板可以是任何乙個長度只要farmer john能夠把它們圍成乙個合理的四邊形。他能夠切出多少種不同的合理方案。注意: *只要大木板的切割點不同就當成是不同的方案(像全排列那樣),不要擔心另外的特殊情況,go ahead。 *柵欄的面積要大於0. *輸出保證答案在longint範圍內。 *整塊木板都要用完。

*第一行:乙個數n

*第一行:合理的方案總數 6

6輸出詳解:

farmer john能夠切出所有的情況為: (1, 1, 1,3); (1, 1, 2, 2); (1, 1, 3, 1); (1, 2, 1, 2); (1, 2, 2, 1); (1, 3,1, 1);

(2, 1, 1, 2); (2, 1, 2, 1); (2, 2, 1, 1); or (3, 1, 1, 1).

下面四種 -- (1, 1, 1, 3), (1, 1, 3, 1), (1, 3, 1, 1), and (3,1, 1, 1) – 不能夠組成乙個四邊形.

構成四邊形的幾何約束條件:設該四邊形邊長分別為a,b,c,d

則必須有 a+b+c>d      a+b+d>c      a+c+d>b      b+c+d>a

對該不等式進行變形 能得出以下結論

在乙個嚴格的平面四邊形中,任意一邊的邊長必須小於周長的1/2.

得到這個結論後,動態規劃的思路就有了

設f[i][j]表示選取前i塊木板,得到總長為j的方案,則有

f[i][j]+=f[i-1][j-k] (1<=i<=4  1<=j<=n  1<=k<=min(j,c/2-1));

#include#includeusing namespace std;

int n,midc,f[5][2600];

int main()

leetcode leetcode160相交鍊錶

編寫乙個程式,找到兩個單鏈表相交的起始節點。如下面的兩個鍊錶 在節點 c1 開始相交。示例 1 輸入 intersectval 8,lista 4,1,8,4,5 listb 5,0,1,8,4,5 skipa 2,skipb 3 輸出 reference of the node with valu...

160 複雜介面動畫變化

我們還是乙個左選單和乙個主面板 我們在移動的同時還要給兩個介面加上動畫 1.左選單 縮放 透明度,平移 2.主面板 縮放 3.背景 亮度 我們讓左選單關閉的時候,變小,變透明 主面板變大 背景的亮度變暗 我們在onviewpositionchanged 方法中去實現 我們來個方法dispatchui...

LineageOS 正式發布 16 0 版

lineageos 是乙個社群驅動的 基於 android 移動平台的開源作業系統 也稱 android 發行版 是此前已停止維護的 cyanogenmod 專案的後繼者。lineageos 支援眾多移動裝置,且在原生 android 之外引入了諸多獨特的修改與功能。該專案於日前正式發布了基於 an...