摘要: 思维比较好想的hash,但是要双哈希 于是要用map<pair<long long,long long>,int> AC代码: #include<iostream> #include<algorithm> #include<cstdio> #include<map> #include<cstring 阅读全文
posted @ 2021-11-07 18:56 beta_dust 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 给定 n 个点,每个点有个点权,任意两点可以连一条边,边权为两点权的异或值,求最小生成树 想法一:暴力求出所有边权,然后把边按边权从小到大排序,用kruskal跑最小生成树 想法二:把边排序后,发现最小的边权就是两个相同的值的异或值(为0),其次就是两个只在第 0 位不同的数的异或值 (为1)... 阅读全文
posted @ 2021-10-26 23:10 beta_dust 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 1003 Calculate 题意:给定x1,x2,y1,y2,计算,模数为1e9+7 T <= 100, 1 <= x1 <= x2 <= 1e9, 1 <= y1 <= y2 <= 1e9 solution: 暴力展开,对于∑i / x1,能够O(1)计算 对于∑x2 / i 这项, 对10 / 阅读全文
posted @ 2021-07-23 21:29 beta_dust 阅读(145) 评论(0) 推荐(1) 编辑
摘要: 做了几道dsu on tree后再写点分治,发现点分治的题都能用dsu on tree做 然后发现这两者是有很多共同之处的 都枚举了每个点为根节点 都是nlogn的遍历 大都记录了每个点到根节点的整条链的信息 难度基本不大 个人觉的还是dsu on tree好用一点,感觉代码量更小 点分治的一题: 阅读全文
posted @ 2021-05-29 15:01 beta_dust 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 平衡树的算法很多,可分为有旋和无旋 无旋平衡树有:替罪羊树,fnq treap 有旋平衡树有:AVL树,Splay 还有很多其他的平衡树算法,不必掌握太多 主要掌握Splay和fhq treap,因为这两种可以支持区间操作 平衡树模板之Splay 核心思想:通过旋转使操作节点伸展到根节点 本来只要通 阅读全文
posted @ 2021-05-29 14:41 beta_dust 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 线段树的静态区间查询 区间里大于x的最左边的位置: 看左区间的最大值是否大于x,决定是否往左区间找 区间最大连续和: 维护区间左连续最大和,右连续最大和,最大连续和 求整个区间中大于k的数之和: 权值线段树,然后求区间和 区间众数 之 在排好序的数组里查询区间众数的个数: 维护区间左连续相同数的个数 阅读全文
posted @ 2021-04-28 16:15 beta_dust 阅读(86) 评论(0) 推荐(0) 编辑
摘要: Problem 1492 C. Maximum width 给两个字符串 s 和 t ,s的长度为n, t的长度为m, 且 t 为 s 的子串 也就是可以取p1,p2,p3....pm,使得t[pi] == s[i] (p1 < p2 < ...< pm) 求max(pi+1 - pi) 最大为多少 阅读全文
posted @ 2021-04-28 15:05 beta_dust 阅读(62) 评论(0) 推荐(0) 编辑
摘要: Problem CF1486 B. Eastern Exhibition 题意:给n个点,要选一个地方建一个最优点(最优点不必和n个点的位置都不同,所有点的位置用两个整数坐标x和y表示) 定义最优点为n个点到这个点的距离之和最小,距离的定义为|x1 - x2| + |y1 - y2|,输出一共有多少 阅读全文
posted @ 2021-04-15 12:44 beta_dust 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 比赛总结 这场打的太难顶了,通过这场可以很明显看出我队综合水平不行,和其他队伍的差距太大了,前55名过题数都是在我们的3倍及以上 由于我们综合水平低,且比赛时状态也不好,写题的策略也错了,导致这场2题打铁 从L题讲起 L 看到榜上这么多人过L后,我们也就跟榜开这题了,当时我们是3个人一起想这题,还是 阅读全文
posted @ 2021-04-07 15:25 beta_dust 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 比赛时想出来的做法,我并不会主席树,比赛时想到这个做法时非常激动,可惜没有A出来 题意:给一个长度为n数列a[n],m次查询,每次查询给一个区间[Li ,Ri],定义一个集合Si,Si为这个区间里选任意一些数相加得到的数,定义f(S)为集合S里没出现的最小的正数,对于每次查询,输出f(Si) 示例: 阅读全文
posted @ 2021-04-06 00:12 beta_dust 阅读(76) 评论(0) 推荐(0) 编辑