08 2018 档案
摘要:求树上最长异或路径. 根据异或的性质,我们知道a^a=0,那么a^b^b^c=a^c; 所以我们随便找个点做根,然后dfs出每个点到根的异或路径长num[i],对于任意两点有两种情况,当根是他们的LCA时,那么两点异或路径和就直接是num[i]^num[j],不是LCA时,由于两条路径都包含了LCA
阅读全文
摘要:求两个不相交区间异或和的和最大. 设l[i]是1~i一段区间的最大异或和,r[i]是i~n一段区间的最大异或和,题意就是求max(l[i]+r[i+1]); 那么只要求l,r数组。 设num数组是个前缀异或和,根据异或的性质,我们要求i~j的异或和就是num[i]^num[j],所以对于l数组,我们
阅读全文
该文被密码保护。
摘要:求一个01序列的子串取反并反转后与原串相同的个数. 很显而易见的是,反转的话只要子串对应的i和n-i+1位相反即可,这个看一下样例能很快看出来. 所以我们正着求一遍hash,反着取反然后求hash. 枚举中间点,二分一下这个子串长度的一半,check的话就是判断前一半子串的正hash值与后一半子串取
阅读全文
摘要:给定字符串,求给定l,r区间的最短循环节长度. 显然区间长度循环节长度是区间长度m的因数,但是这样直接写个q根号m的暴力就肯定T掉啦。 想了挺久发现了一个喵喵的做法,不难发现,每个区间的某个字母必须在一个循环节里都出现,若这个字母出现k次,那么循环节的个数必须是k的因数,那么循环节个数就在这个区间g
阅读全文
摘要:夏令营回来后就不知道怎么回事,状态一直不好== 为了让自己不要太颓废,开个坑在noip前把一本通的好题都刷一遍。 如果想要noip拿省一的话,就要开始好好努力了。加油! 为了节省时间,一些比较简单的东西就不再赘述了。 第一部分 基础算法 第 1 章 贪心算法 #10000 「一本通 1.1 例 1」
阅读全文
摘要:题目大意:n个点,m条边,开始血量为b,从1出发,要走到n,每条边有个扣血量,每个点有个价值,求在血量不为负走到第n个点时,走过的路径点权最大值最小. 最大值最小,很容易想到二分答案,由于血量是边权,我们可以跑最短路来保证他能走到终点,我们二分最大点权,在跑最短路时如果跑到比当前二分到的最大点权还大
阅读全文
摘要:A.HDU 1171 把和拆一半作容量然后跑背包。 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cmath> 5 #include <cstring> 6 #include <queue>
阅读全文
摘要:A.HDU 1045Fire Net 有墙情况的8皇后问题。。 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cmath> 5 #include <cstring> 6 #include <q
阅读全文
摘要:这场只肝出1题... A.HDU 1231最大连续子序列 签到题。。 B.HDU 1176免费馅饼 比赛事没看这题全跑去干C了。。 f[i][j]表示第i个时刻第j个位置的最大数量,倒着枚举时间,考虑上一个时刻i+1相邻位置跑到j,需要注意的是可以原地不动.f[i][j]=max(max(f[i+1
阅读全文
摘要:虽然AK了但是手速不够快而且罚时爆炸QAQ.... A.Prime Ring Problem 找素数环,经典深搜问题,要注意找完排列再判断素数为超时,正确的做法是边搜边判断,注意输出格式== 1 #include <iostream> 2 #include <cstdio> 3 #include <
阅读全文

浙公网安备 33010602011771号