T1:P1127 词链(搜索)
题意:如果单词 XX 的末字母与单词 YY 的首字母相同,则 XX 与 YY 可以相连成 X.YX.Y。(注意:XX、YY 之间是英文的句号 .
)。例如,单词 dog
与单词 gopher
,则 dog
与 gopher
可以相连成 dog.gopher
思路:对于一条词链,去掉左端和右端字母,节点处两边字母都相同,就代表着:
- 每个字母出现的次数一定是偶数次
- 每个字母作为单词首位的次数一定等于作为末尾
然后再加上左右端字母:
- 若两个字母相同,依然符合以上性质,则找字典序最小的单词做词首。
- 若不相同,则在左端的字母作为单词首位的次数比作为末尾的次数多1,找到符合这个条件的单词就可以了
要注意的点:
-
先将单词按字典序排序
-
找到了为首的单词,从这个单词开始搜索,第一个搜到的后继单词一定是符合要求的单词里字典序最小的,直接返回
T2:「BZOJ3631」[JLOI2014] 松鼠的新家(树上差分)
题意:给个n点树,再给个节点的游览顺序,每经过一个节点(包括上一个游览的点到下一个游览的点路径上的点)就可以从这个节点拿走一个糖,问所有节点一开始要放几个糖。最后到达的节点不用糖。
解法:是个树上差分的裸题,但是想用用树剖(因为刚现学完),然后还是挂了,因为树剖是把两个点的路径分成多条链,如果在树剖里做差分,边求lca边差分是最佳的,最后前缀和一下就好了