大学ACM第三周心得

T1:P1127 词链(搜索)

题意:如果单词 XX 的末字母与单词 YY 的首字母相同,则 XX 与 YY 可以相连成 X.YX.Y。(注意:XX、YY 之间是英文的句号 .)。例如,单词 dog 与单词 gopher,则 doggopher 可以相连成 dog.gopher

思路:对于一条词链,去掉左端和右端字母,节点处两边字母都相同,就代表着:

  • 每个字母出现的次数一定是偶数次
  • 每个字母作为单词首位的次数一定等于作为末尾

然后再加上左右端字母:

  • 若两个字母相同,依然符合以上性质,则找字典序最小的单词做词首。
  • 若不相同,则在左端的字母作为单词首位的次数比作为末尾的次数多1,找到符合这个条件的单词就可以了
要注意的点:
  1. 先将单词按字典序排序

  2. 找到了为首的单词,从这个单词开始搜索,第一个搜到的后继单词一定是符合要求的单词里字典序最小的,直接返回


T2:「BZOJ3631」[JLOI2014] 松鼠的新家(树上差分)

题意:给个n点树,再给个节点的游览顺序,每经过一个节点(包括上一个游览的点到下一个游览的点路径上的点)就可以从这个节点拿走一个糖,问所有节点一开始要放几个糖。最后到达的节点不用糖。

解法:是个树上差分的裸题,但是想用用树剖(因为刚现学完),然后还是挂了,因为树剖是把两个点的路径分成多条链,如果在树剖里做差分,边求lca边差分是最佳的,最后前缀和一下就好了


然后现学的树剖:[https://www.cnblogs.com/71-111/p/13943126.html]

原文地址:https://www.cnblogs.com/71-111/p/13949260.html