摘要: Description 大意是要求实现一个可以给区间每个数开根,同时区间求和的线段树。 思路 由于开根后求和不等于求和后开根,所以每次更新都必须更新到根节点。所幸开根一个数到1之后再开根结果不变,所以如果发现某个线段的和等于r l+1说明无需再更新。 由于开根操作是指数级别,每个区间被更新的最大次数 阅读全文
posted @ 2020-04-20 23:51 limil 阅读(68) 评论(0) 推荐(0) 编辑
摘要: Description 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 思路 和单纯的求面积非常相似,用len来储存被覆盖到两次以上的区间长度。 阅读全文
posted @ 2020-04-20 23:41 limil 阅读(100) 评论(0) 推荐(0) 编辑
摘要: "Description" 思路 显然,如果一个团队所有人里面会的算法都不完全一样,那么肯定存在一个看不起所有人的人(会得最多或会得最偏)。因此一个团队至少有两个人会的算法一模一样(即a值一样)。同时,如果有一个人在一个团队,那么会的题和他相当或比他少(是他的子集)的人也可以加入这个团队。 当然,团 阅读全文
posted @ 2020-04-14 23:16 limil 阅读(91) 评论(0) 推荐(0) 编辑
摘要: "Description" 思路 这E题有点暴力 由于不同的gcd(u, v)的个数不会超过$log_2V$,V是树上最大的数,所以每个结点开个数组,保存从根节点到该节点的所有gcd值。暴力搞就好了。 阅读全文
posted @ 2020-04-14 23:01 limil 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 介绍 快速计算多个矩形覆盖区域的面积或者周长。 实现 求面积 oi_wiki的 "扫描线" 解释得很清楚了,就是求每次扫到得底边覆盖的长度乘上高的总和。 主要是代码实现的细节要注意。这里的线段树离散化处理记录一下。 "HDU1542 Atlantis" 阅读全文
posted @ 2020-04-14 22:45 limil 阅读(749) 评论(0) 推荐(1) 编辑
摘要: "Description" 思路 板子题,需要离散化。然后从最后一张海报往前枚举看看有没有被完全覆盖。 阅读全文
posted @ 2020-04-14 15:24 limil 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 功能 用$log_2n$时间复杂度对区间进行加减乘求和等等操作的数据结构。 实现 主要参考的是 "oi_wiki" 教程。 记录一下板子(即 "HDU1166 敌兵布阵" 的代码) 注意事项 1. 开4倍空间,再大点更好。 2. 叶结点不要pushdown,否则可能会越界(因为只开了4倍空间) 其它 阅读全文
posted @ 2020-04-14 15:18 limil 阅读(96) 评论(0) 推荐(0) 编辑
摘要: "Description" 题目大意是给定不超过1000个和数(均小于1000)。用m(m using namespace std; typedef long long ll; const int N = 1e3+10; define inf 0x3f3f3f3f int arr[N]; int c 阅读全文
posted @ 2020-04-14 13:18 limil 阅读(180) 评论(0) 推荐(0) 编辑
摘要: "Description" 思路 做法一:组合数学 操作分三步,前两步选孩子再选礼物,最后一步再选孩子。 因此求出两步内选到礼物i的概率,再乘上想要礼物i的孩子的占比,求和所有礼物的结果就是答案。 阅读全文
posted @ 2020-04-14 12:06 limil 阅读(171) 评论(0) 推荐(0) 编辑
摘要: "Description" 思路 题目大意是给定字符串s和c,要求交换s中至多两个字符,使得s字典序严格小于c。如果不存在输出“ ”,否则输出交换后的s。 一开始总想着分类讨论。但是情况实在太多,写不过来。 后面看别人代码才知道应该先找到s交换两个字符后最小的字典序,然后再和c对比即可。 详见代码。 阅读全文
posted @ 2020-04-14 11:59 limil 阅读(204) 评论(0) 推荐(0) 编辑