hdu2452 記憶化搜尋

2021-06-04 18:37:51 字數 701 閱讀 5899

//一顆樹,邊是單向的,每個節點有一定的權值,要你從根節點走到葉子節點,走到第偶數節點時,使後面的權值和最小;走到第奇數節點時,使後面的權值和最大

//邊鍊錶儲存,並查集查詢根節點

//用val[i][0]表示第i個節點是偶數節點的值和val[i][1]表示第i個節點是奇數節點的值

//遞迴的計算,因為節點很多,所以要記憶化搜尋

#include #include#includeusing namespace std;

#define inf 1234567890

#define n 10005

#define m 500000

int n,m,t,sumf,tot;

int ans[n],next[n],f[n],val[n][2];

struct tnode

node[m];

void addedge(int u,int v)

int find(int x)

return r;

}void merge(int u,int v)

void init()

for(i=1; i<=n; i++) scanf("%d",&ans[i]);

for(i=tot=0; i=0;i=node[i].tot)

else

return 0;

}

hdu3779 記憶化搜尋

兩列火車入站,重新排列的車廂符不符合要求 記憶化搜尋,ans i j 記錄的是第一列火車的第i節和第二列火車的第j列在組合後的序列裡找不找的到 如果找的到就標記為1,因為是從前到後搜尋,所以在ans n m 1時,表示符合 include include includeusing namespace...

hdu1069 記憶化搜尋

此題思路還是比較清晰的,對於每個x,y,z,都會有三種情況,dp i 表示把第i個放在最下面得到的最大高度,狀態轉移方程為dp i max dp i dp j height 這裡的j要滿足能夠放在i上面,height為第i個矩形的高度 如下 include include include inclu...

hdu 1078 記憶化搜尋

hdu 1078 題意 每次可以朝乙個方向走k格,必須走到乙個數值比當前值大的點,問最多數值加起來能有多少,走到不能再走。一開始定義錯了,定義dp i j 為以 i,j 為終點時所能得到的最大值。dp i t dx j t dy max dp i t dx j t dy dp i j a i t d...