巢狀矩形(DAG模型) 紫書訓練

2021-10-14 08:17:20 字數 917 閱讀 9942

題目描述

有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x(a,b)可以巢狀在矩形y(c,d)中當且僅當a紫書上有題目,但是沒有寫題出自**,只好自己大致寫一下題目了.

做題感受:經典的dp問題,但是由於我剛入門dp並不能特別快理解,想出來了還好說。

思路:狀態轉移方程d(i)=max.d(i)表示從i出發的最長路長度,d(j)是能被d(i)巢狀的點,因此d(j)需要+1.

之後遍歷所有點,找出所有點中最大的d(i)就是最終答案.

下面是我的**:

#include

using

namespace std;

typedef

long

long ll;

const

int inf =

0x3f3f3f3f

;struct juxingjuxing[

1010];

int g[

1010][

1010];

//用來建立圖

int d[

1010];

//用來記錄從節點(i)出發的最長路長度.

int n;

intdp

(int i)

return ans;

}void

print

(int i)

//利用遞迴,字典序輸出最長路徑}}

intmain()

}int maxn =0;

int maxi =0;

for(i =

1; i <=n; i++)}

cout << maxn << endl;

print

(maxi)

;//輸出路徑

}return0;

}

DAG模型 矩形巢狀

有n個矩形,每個矩形可以用兩個整數a,b描述,表示它的長和寬。矩形x a,b 可以巢狀在矩形y c,d 中,當且僅當 a 你的任務是選擇盡量多的矩形排成一行,使得除最後乙個矩形外所有矩形都可以巢狀在下乙個矩形內。如果存在多解,矩形編號的字典序應盡量小。如下 include include inclu...

(dag模型 最長路 字典序)巢狀矩形

有 n 個矩形,每個矩形可以用兩個整數 a,b 描述,表示它的長和寬。矩形 x a,b 可以巢狀在矩形 y c,d 中當且僅當 a c,b d,或者 b c,a d 相當於把矩形 x 旋轉了 90 例如 1,5 可以巢狀在 6,2 內,但不能巢狀在 3,4 內。你的任務是選出盡量多的矩形,使得除了最...

紫書訓練 7 11

貪心場次 密碼 996996 有點思維 include define il inline define pb push back define fi first define se second define ms data,v memset data,v,sizeof data define sc...