DAG上的DP之 矩形巢狀

2021-06-22 20:33:42 字數 1179 閱讀 2742

昨天隊長說dag,今早就蹦躂蹦躂滴開搞了,小白書~翻呀翻,看呀看,媽蛋,lrj留的問題那麼深奧讓彩筆情何以堪啊~~德瑪西亞

原諒彩筆只能刷水題啊

南陽理工oj上的題:

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:4 描述

有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x(a,b)可以巢狀在矩形y(c,d)中當且僅當a

輸入

第一行是乙個正正數n(0輸出

每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行

樣例輸入

1

101 2

2 45 8

6 10

7 93 1

5 812 10

9 72 2

樣例輸出

5

題意清晰明了,句句鏗鏘有力,關鍵是母語啊!愛我中華~

小白書上用了記憶化搜尋,和乙個列印字典序的,嗯嗯,想想就懂了

萬年貼**。。。

小白書說:

二元關係都可以用圖建模~~~

然後把每個矩形看成乙個點,如果乙個矩形x能巢狀在矩形y裡面,就可以從x到y連一條有向邊

然後乙個有向無環圖就建立起來了

然後就是列舉起點,求最長路裡的最大的

狀態轉移方程就係:

d(i)=max(d(j)+1|(i,j)屬於邊集e) 乙個點只能走到它的相鄰的點,路徑長+1

————————

對於列印最小字典序路徑的問題:

先把最大的d[i]的下標i找出來,然後起點為i,從剩下的點中找滿足條件是跟它相鄰的,遞迴下去~~遞迴完要馬上退出,不然就會回溯了

小白書還留了個列印所以路徑的問題,臣妾做不到啊

#include#include#include#includeusing namespace std;

int n;

struct node

r[1001];

int g[1100][1100];

int d[1001];

void getgraph()

cout}

print(id);*/

}return 0;

}

DAG模型 矩形巢狀

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

DAG上的動態規劃 NYOJ 矩形巢狀

有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅adag上的動態規劃 1.二元關係能夠用圖來建立模型 2.用a到b有單向邊來表示矩形a能巢狀在矩形b中 3.乙個矩形不能巢狀自己,也就是說沒有自環現象,也就是乙個dag define rep i,a...

NYOJ16 矩形巢狀 DAG上的DP LIS

矩形巢狀 時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當ausing namespace std define n 1005 struct node a n bool cm...