一本通 Trie字典樹

2022-07-15 14:18:12 字數 1792 閱讀 9678

phone list

#includeusing

namespace

std;

const

int n=1e5+5

;int t,n,tot,c[n][10

];char s[10

];bool

ans,bo[n];

void

clear()

bool

insert()

bo[u]=1

;

return

flag;

}int

main()

printf(

"%s\n

",ans?"

no":"

yes"

); }

}

the xor largest pair

將$a[i]$看作長度為$32$的二進位制$01$串,插入$trie$字典樹。

對於$a[i]$對應的$32$位二進位制串,我們從高位到低位,盡量沿著「與$a[i]$當前位相反的字元指標」向下訪問。

根據$xor$運算「相同得0,不同得1」的性質,即可找出與$a[i]$做$xor$運算結果最大的$a[j]$。

#includeusing

namespace

std;

const

int o=1e5*30

;int n,x,tot,ans,c[o][2

];void insert(int

x) }

int cal(int

x)

return

res;

}int

main()

printf("%d

",ans);

}

背單詞

將所有字串倒著插入字典樹,使字尾變為字首。

貪心:不能出現情況1。如果$s1$為$s$的字尾,那麼$s1$的序號必須小於$s$的序號。

要使結點的序號減去其兒子的序號最小,我們從小到大遍歷每個結點的子樹即可。

#includeusing

namespace

std;

const

int n=510000+5

;int n,tot,cnt,w[n],fro[n],siz[n],fa[n],c[n][26

];long

long

ans;

bool

bo[n];

char

s[n];

struct edgea[n];

vector

vi[n];

void add(int x,int

y) void insert(int

x) bo[u]=1,w[x]=u;

}void dfs(int

u) sort(vi[u].begin(),vi[u].end());

int num=0

;

for(int i=0;i)

ans+=num+1,num+=vi[u][i];

}int

main()

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

dfs(0);

printf(

"%lld

",ans);

}

一本通學習筆記 字典樹與 0 1 Trie

字典樹中根到每個結點對應原串集合的乙個字首,這個字首由路徑上所有轉移邊對應的字母構成。我們可以對每個結點維護一些需要的資訊,這樣即可以去做很多事情。include using namespace std namespace trie node root node pool 1000005 int i...

佇列(一本通)

這道題重點是關係的轉換和初始化 include include include includeusing namespace std int a 101 記錄接著的的那個節點 int n,m int main int ans void bfs int x,int y int main cout in...

情感修煉一本通

實踐準則 經驗親密關係構成要素 了解 關心 相互依賴性 相互一致性 信任以及承諾 親密的伴侶彼此間有著廣泛而私密的了解。他們熟知彼此的經歷 愛好 情感和心願,而且一般不會把這些資訊透露給其他人。親密的伴侶關心對方,彼此能從對方身上感受到更多的關愛。如果人們認為自己的伴侶了解 理解並欣賞自己,其親密程...