摘要: 求树上最长异或路径. 根据异或的性质,我们知道a^a=0,那么a^b^b^c=a^c; 所以我们随便找个点做根,然后dfs出每个点到根的异或路径长num[i],对于任意两点有两种情况,当根是他们的LCA时,那么两点异或路径和就直接是num[i]^num[j],不是LCA时,由于两条路径都包含了LCA 阅读全文
posted @ 2018-08-30 23:08 Kaleidoscope233 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 求两个不相交区间异或和的和最大. 设l[i]是1~i一段区间的最大异或和,r[i]是i~n一段区间的最大异或和,题意就是求max(l[i]+r[i+1]); 那么只要求l,r数组。 设num数组是个前缀异或和,根据异或的性质,我们要求i~j的异或和就是num[i]^num[j],所以对于l数组,我们 阅读全文
posted @ 2018-08-30 22:51 Kaleidoscope233 阅读(127) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-08-30 22:36 Kaleidoscope233 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 求一个01序列的子串取反并反转后与原串相同的个数. 很显而易见的是,反转的话只要子串对应的i和n-i+1位相反即可,这个看一下样例能很快看出来. 所以我们正着求一遍hash,反着取反然后求hash. 枚举中间点,二分一下这个子串长度的一半,check的话就是判断前一半子串的正hash值与后一半子串取 阅读全文
posted @ 2018-08-30 22:22 Kaleidoscope233 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 给定字符串,求给定l,r区间的最短循环节长度. 显然区间长度循环节长度是区间长度m的因数,但是这样直接写个q根号m的暴力就肯定T掉啦。 想了挺久发现了一个喵喵的做法,不难发现,每个区间的某个字母必须在一个循环节里都出现,若这个字母出现k次,那么循环节的个数必须是k的因数,那么循环节个数就在这个区间g 阅读全文
posted @ 2018-08-30 22:17 Kaleidoscope233 阅读(187) 评论(0) 推荐(0) 编辑