摘要: 也是点分治的简单题。(对我来说算难了orz.) 首先这里的难点就在于查询是否存在长度k。 如果我们每次都去对询问进行一次点分治,显然是过于浪费了。 所以我们可以离线做它。 在点分治过程中统计所有答案。 那么怎么统计答案,又是一大难点,如果要直接按之前找k点对的统计。 那么容斥删点的时候,需要找遍所有 阅读全文
posted @ 2020-08-27 14:16 levill 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 点分治的模板题。 总结一下点分治:核心就是关于重心的寻找。 对于一棵无根树,我们随机选择一个点作为根来处理树上路径。 最坏情况下有n层接近O(n)的复杂度,这时显然不太好。 那么我们就寻找到一个点(重心),满足他的最大的子树最小。这样可以最小化最大的递归层。 经过证明(证明略),最大的子树的最小的值 阅读全文
posted @ 2020-08-27 11:58 levill 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 显然第一眼用线段树合并线性基即可。 对于线段树复杂度nlogn。合并logn,插入logn.。 总复杂度在nlogn^3。对于这里的5e5,依旧会超时。 考虑其他的思路:这里用了和某道树上查询的紫题差不多的思路。 我们让线性基尽可能靠右,然后只需要判断是否在区间内即可。 因为预处理出了所有点,那么查 阅读全文
posted @ 2020-08-27 09:24 levill 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 可以发现,对于每种开关,都可以看成二进制位来转换成一个十进制的数。 那么,由于线性基里的元素构造出来是不会有重复的。 那么我们就是去插入线性基。然后对于每个线性基里的数都有选和不选的可能 所以ans = 1LL<<cnt。不要忘记取模 // Author: levil #include<bits/s 阅读全文
posted @ 2020-08-26 19:42 levill 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 这道题真的让我受益匪浅,加深了对线性基的认识。 首先,考虑了一般解法,较暴力。 将x->y路径上所有的点都加入一个空的线性基集合,最后求一次最大值即可。 既然要将每个点都加入,那么必然要一个点一个点地跳。(因为每个点都要遍历到,所以不能倍增) 那么,这时最坏复杂度在N^2。只有30分。 考虑去优化。 阅读全文
posted @ 2020-08-26 17:05 levill 阅读(159) 评论(0) 推荐(0) 编辑
摘要: HDU1848. 筛出每个值的SG函数值。 然后根据xxx博弈的定理:多个堆的博弈结果为每个堆结果的异或值。 为0先手必败,否则先手必胜。 // Author: levil #include<bits/stdc++.h> using namespace std; typedef long long 阅读全文
posted @ 2020-08-26 10:00 levill 阅读(198) 评论(0) 推荐(0) 编辑
摘要: A:百度永远滴神 // Author: levil #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int,int> pii; const int N = 2e5+5; const int 阅读全文
posted @ 2020-08-26 09:38 levill 阅读(208) 评论(0) 推荐(0) 编辑
摘要: A:开局就开了这题,一直以为一开始想的有问题。 其实并没有错。对于起点和终点,肯定是某个终点和起点的这段距离只需要走一次。 其中重叠也应该看成不同的路线。(仔细想想就明白了) 那么,就是找和每个点最远的点了。 这里就用到了树的直径。 根据树的直径的性质,距离每个点最远的点肯定是直径中的一点。(可以画 阅读全文
posted @ 2020-08-25 11:35 levill 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 比较简单的一个题,dp递推一下就可以发现,3的倍数时一定无解 // Author: levil #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int,int> pii; const in 阅读全文
posted @ 2020-08-20 08:33 levill 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 第一眼就觉得是个DP。一开始想的背包枚举对应长度时的最小代价。 但是这样复杂度是N*M,显然会T。 正解:不需要去考虑凑成长度的最优代价。 用dp[i]来表示到把到i包括i的牛全覆盖掉的最小代价。 那么对于每一个i,我们去枚举转移的位置j,这样最优的方案里会包括上最优的组合法(包括重复选同一个) 那 阅读全文
posted @ 2020-08-19 15:33 levill 阅读(152) 评论(0) 推荐(0) 编辑