HDU6625 01字典樹亂搞

2021-09-26 04:03:42 字數 754 閱讀 4518

題意:給你兩個陣列a和b,讓你安排a和b的順序使得a陣列與b陣列一一對應得到的異或陣列c字典序最小

思路:建01字典樹暴力跑最優匹配即可,借鑑標程思想寫了乙份ac**,將兩個數組建到一顆字典樹上,用num陣列維護當前節點是否可用,這樣便使得刪除操作非常容易實現,在匹配的時候利用dfs的性質去暴力匹配即可,複雜度nlogn

**如下:

#includeusing namespace std;

const int maxn=1e5+5;

int tree[31*maxn][2];

int a[maxn],b[maxn];

int num[31*maxn][2];

int cnt;

vectorans;

void insert(int x,int d)

}int get()

}bool dfs(int x,int d,int pre)

if(dfs(y,d^1,x))

return false;

}}int main()

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

while(ans.size()sort(ans.begin(),ans.end());

for(int i=0;iprintf("\n");

for(int i=0;i<=cnt;i++)

tree[i][0]=tree[i][1]=0;

}return 0;

}

hdu 1251 字典樹入門

ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 input 輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師交給ignatius統計的單詞,乙個空行...

HDU1251字典樹模板

problem description ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 input 輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師...

HDU 1251 字典樹 入門

ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 input 輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師交給ignatius統計的單詞,乙個空行...