HDU 5469 Antonidas(搜尋剪枝)

2021-08-28 03:09:50 字數 901 閱讀 4655

題目:n個節點的一顆樹,每個節點有個字母,給出目標字串,問求是否存在點對u,v使得u到v的路徑上的字母正好組成這個字串。

思路:dfs搜尋,感覺複雜度過不了,但是卻過了。到達乙個點時候判斷還剩下沒匹配的長度是不是小於這個點往外連線的最大長度。

#includeusing namespace std;

typedef long long ll;

const int maxn=1e4+10;

struct nodeedge[maxn<<1];

int first[maxn],tot;

void add(int u,int v)

int t,n,dis[maxn],dep[maxn],len,fa[maxn];

char a[maxn],b[maxn];

void dfs(int u,int pre)

}bool dfs(int u,int k,int pre)

}if(fa[u]!=pre&&b[k+1]==a[fa[u]]&&dep[fa[u]]+dis[1]>=len-k)

return false;

}int main()

dep[1]=0;

dfs(1,0);

scanf("%s",a+1);

scanf("%s",b+1);

len=strlen(b+1);

int flag=0;

for(int i=1;i<=n;i++)

if(b[1]==a[i])

}printf("case #%d: ",++cas);

if(flag) puts("find");

else puts("impossible");

}return 0;

}

2015 上海網賽 HDU5469 樹分治

rainto96 beijing university of posts and telecommunications school of software engineering 題意 10000個節點的一顆樹 每個節點有個字母 給出目標字串 求是否存在點對u,v使得u到v的路徑上的字母正好組成這...

hdu 1254 推箱子 廣搜 深搜

注意以下幾點 1.箱子是否可走 2.人是否可達箱子後面 3.箱子的每個方向只走一次,而不是每個位置 廣搜箱子路徑,深搜人可否達箱子後面,記錄方向用visb 10 10 4 來記錄 include include include include include includeusing namespa...

hdu 1010 深搜 回溯

也不想解釋了,只是做來找回做題的感覺。遲d出個這方面的小總結,越來越發現對所學知識作總結的重要性了 1010tempter of the bone include includeint n,m,time int xs,ys,xd,yd int direc 4 2 char str 11 11 boo...