扫描线
WerKeyTom_FTD
我是一只来自中山纪念中学高三的oier,请多多指教
展开
-
纪念碑
题目大意在N*M的网格中,有P个矩形建筑,求一个最大边长的正方形,使得网格中能找到一个放置正方形的地方,不会与建筑重合。 N,M<=10^6,P<=40000。扫描线如果有两条在x轴上的扫描线l与r,表示l~r-1之间可以放边长为r-l的正方形。 期望在l与r间放一个边长为r-l+1的矩形。 那么假如我们能在两条扫描线间找到最大空隙ms。 如果r-l+1<=ms,那么可以放,接下来r+1。原创 2015-10-06 16:28:21 · 503 阅读 · 0 评论 -
[JZOJ100019]A
题目大意求一颗树有多少条不同的路径,使得路径长度>1且不存在j!=k满足j是k倍数。瞎做有n log n个限制某两个点不能出现在一条路径中。 可以转化成某个区间的起点不能以某个区间为终点。 然后扫描线用线段树维护。 这个是既包含插入又包含删除的覆盖问题。 因为操作具体对称性所以可以标记可持久化。#include<cstdio>#include<algorithm>#include<cma原创 2017-06-26 16:08:40 · 436 阅读 · 0 评论 -
腐女的生日
题目描述腐女要过生日了,pty 想给腐女送礼物,但是腐女所在的教室离pty 的教室太远了,于是pty就拜托会动归和A星的djy帮忙送礼物。djy在学校建立了一个平面直角坐标系,他站在了(0,0)点,腐女在(x0,y0)点,djy每次只能往上下左右四个方向移动一步,中间有n栋矩形教学楼,每个教学楼给出两个对角的坐标,并且保证每栋教学楼的周围区域(如图所示)不会有别的教学楼,即djy可以绕一个教学楼走不原创 2017-04-12 22:40:00 · 541 阅读 · 0 评论 -
[hackerrank]Self-Driving Bus
题目大意一颗n个节点的树,现在问有多少对[l,r]满足保留编号[l,r]的点在树上是联通块。 n<=1e5点剖点分治一波 一个联通块要么包含分治中心,要么不包括,后者递归分治处理。 假设分治中心编号为x。用fa表示在树上的父亲(以x为根) 我们找到极大区间[l,r]包含x使得编号[l,r]都出现了。 把合法的左端和右端都提取出来(合法的左端i即[i,x]没有fa会连到i左边,合法右端i即[原创 2017-02-24 22:23:26 · 703 阅读 · 0 评论 -
[bzoj4573][UOJ#195][ZJOI2016]大森林
题目描述小Y家里有一个大森林,里面有n棵树,编号从1到n。一开始这些树都只是树苗,只有一个节点,标号为1。这些树 都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力。小Y掌握了一种魔法,能让第l棵树 到第r棵树的生长节点长出一个子节点。同时她还能修改第l棵树到第r棵树的生长节点。她告诉了你她使用魔法的 记录,你能不能管理她家的森林,并且回答她的询问呢? 第一行包含 2 个正原创 2017-02-23 14:32:44 · 2460 阅读 · 0 评论 -
保卫艾尔
题目描述凯莱克斯研制出的新防御矩阵系统的建立方式是这样的:他用艾尔上的 n座水晶塔为基础建立多层防御矩阵,如果将艾尔视为一个 直角坐标系,则每座水晶塔都有一个坐标(xi,yi) 。 一层防御矩阵是一个四边形,四边形的四个顶点都是一座水晶塔,而且四边形两条对角线分别平行于x 轴和y 轴。两条对角线的交 点为防御矩阵的中心。中心必须位于防御矩阵的内部,同时也不能位于四边形的边上(即该四边形是原创 2017-01-14 22:34:23 · 378 阅读 · 0 评论 -
人生的价值
题目大意一堆二维点,有点权。 选择一个坐标建饭堂可以收获所有与其曼哈顿距离不超过m的点的点权。 求最大收获。切比雪夫距离曼哈顿距离是个菱形。 将坐标轴旋转45度,再进行放缩,转化为图像是正方形的切比雪夫距离。 然后可以经典扫描线。#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#define fo(原创 2016-11-16 20:30:53 · 410 阅读 · 0 评论 -
[NOI2016][bzoj4653]区间
题目大意现在有 n个区间,选择一些区间使得其中能找出m个区间交集不为空。 最小化选择的最大区间长度减最小区间长度排序按照区间长度排序,然后维护两个指针l,r,表示当前选择了[l,r]的区间。 用线段树维护每个点被覆盖了多少次以及被覆盖最多次的点被覆盖的次数。 每次r右移,然后加入线段树中。 之后假如最大被覆盖次数不低于m,不断更新答案并删除l对应区间,接着右移l。#include<cstdi原创 2016-08-11 20:14:32 · 940 阅读 · 0 评论 -
[51nod 1463]找朋友
题目大意两个序列A和B。 每次询问区间[l,r],从该区间挑出两个下标i,j,满足|Bi-Bj|处于集合S中,并要求最大化Ai+Aj的值。 S集合的大小<=10,B是n的一个排列。扫描线我们倒着枚举左边界l,并处理掉所有左端点为l的询问。 设f[i]表示在[l,i]中找一个j,使得符合要求的情况下最大的Ai+Aj,那么[l,r]的询问相当于在[l,r]的f中求最大值。 f用线段树维护,每次l原创 2016-08-17 22:18:04 · 648 阅读 · 0 评论 -
健美猫
题目大意旋转序列s使得∑ni=1|si−i|\sum_{i=1}^n|s_i-i|最小做法大致思路是可以拆绝对值记录个数即贡献,顺着扫,对于一个位置有两个位置很关键。 (我都不知道我在说什么#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace原创 2017-09-11 22:29:35 · 716 阅读 · 0 评论