昨天隊長說dag,今早就蹦躂蹦躂滴開搞了,小白書~翻呀翻,看呀看,媽蛋,lrj留的問題那麼深奧讓彩筆情何以堪啊~~德瑪西亞
原諒彩筆只能刷水題啊
南陽理工oj上的題:
時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:4 描述
有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x(a,b)可以巢狀在矩形y(c,d)中當且僅當a
輸入
第一行是乙個正正數n(0輸出
每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行
樣例輸入
1101 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...