题意 有 n n n个珠子,一开始只有一个珠子,随后的 n − 1 n-1 n−1个珠子以如下方式之一加入: 1.直接向已有的珠子连一条红线; 2.在已有连红线的两个珠子之间的红线拆段,再分别向它们连一条线。 给出最后形成的树(不给出边的颜色),且每条边有权值,求蓝边权值和的最大值。 题解 原始想法:根据样例猜一下,是不是每个点都可连两条蓝边,保证蓝边不相交,树形DP一下即可?显然是错的(A
传送门 首先回文子串可以用 m a n a c h e r manacher manacher求出来,并且可以知道开头和长度,那么问题就转化成求一个子串在原串中出现了多少次。 这个可以用 S A M SAM SAM求(但我还不会 于是就用了 S A SA SA,首先把 h h h数组求出来,那么结合 s t st st表就可以 O ( 1 ) O(1) O(1)求出一个后缀和另一个后缀的 l