Codeforces 35E Parade 扫描线】的更多相关文章

题意: 给出\(n\)个底边在\(x\)轴上的矩形,求外面的轮廓线顶点. 分析: 将每个矩形拆成两个事件:\(\\\{ l, y, + \\\}\)和\(\\\{ r, y, - \\\}\)分别表示在扫描先到\(l\)位置将\(y\)插入数据结构,和扫描线到\(r\)位置将\(y\)从数据结构种删除. 并且该数据结构支持查询最大值 维护数据结构中的当前最大值,每当最大值发生变化时,便找到轮廓线上的两个点\((x,preH)\),\((x,curH)\). 初始时将\(0\)加入数据结构表示地平…
主题链接:点击打开链接 意甲冠军:特定n矩阵(总是接近底部x轴) 然后找到由上面的矩阵所包围的路径,的点 给定n 以下n行给定 y [x1, x2] 表示矩阵的高度和2个x轴坐标 思路: 扫描线维护每段区间的线段 最大的y值 则我们訪问每一个x轴坐标,就相当于訪问x轴坐标向右最短的那个小区间上的最大y值. 则能够得到[x,y] 和 [x+1, y] 这样2个点 当我们发现存在高度差时(且x轴不同样) 那么则手动加入一个点(这个点一定是与y大的点的x同样,y小的点的y同样) 再把3个相邻点且有同样…
Link: Codeforces 35E 传送门 Brief Intro: 给定$n$个矩形,求出轮廓线的所有顶点 Solution: 对于此类可拆分成多个事件点的题目,使用扫描线的方式 将每个矩形分为起始边和终止边两个事件,排序,按顺序扫描 分类讨论: 维护当前最高的高度, (1)如果是起始边,判断其高度是否高于当前高度,如果是,判断添加一个点还是两个点 (2)如果是终止边,判断其是否为当前唯一的最高高度,考虑是否要添加2个节点 TIP: (1)注意,此题要能维护出每个高度和其出现的次数, 因…
题目链接 只要会做,周长并,这题肯定有思路. 有个小地方敲错了,细心啊,扫描线,有一段时间没写过了,还有注意排序的问题,很重要. #include <iostream> #include <cstdio> #include <cstring> #include <vector> #include <cmath> #include <algorithm> using namespace std; #define LL __int64 #…
B. Parade time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Very soon there will be a parade of victory over alien invaders in Berland. Unfortunately, all soldiers died in the war and now the…
B. Parade time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Very soon there will be a parade of victory over alien invaders in Berland. Unfortunately, all soldiers died in the war and now the arm…
原文地址:http://blog.csdn.net/zearot/article/details/48299459(如有侵权,请联系博主,立即删除.) 线段树详解    By 岩之痕 目录: 一:综述     二:原理    三:递归实现    四:非递归原理      五:非递归实现 六:线段树解题模型    七:扫描线   八:可持久化 (主席树)     九:练习题 一:综述 假设有编号从1到n的n个点,每个点都存了一些信息,用[L,R]表示下标从L到R的这些点. 线段树的用处就是,对编号…
蒟蒻才普及组呀~ 大佬别D我 等集中补一下 CF980F:咋说捏,我觉得要联赛了做这题有点浪费时间,等想颓废了再来写写叭qwq 215E/279D/288E/331C3/431D/433E/750G/776G(数位dp) 917E/914F/932G(字符串) 论文 https://www.codechef.com/problems/DISTNUM 316D3(置换) 由于不想浪费时间(太弱),不会做且无中文题解(或者写得不好),直接咕咕咕 CF142C CF156E CF123C CF185C…
题目链接:http://codeforces.com/contest/522/problem/D 题目大意:  给你一个长度为n的序列,然后有m次查询,每次查询输入一个区间[li,lj],对于每一个查询,输出在这个区间内的两个相等的数的最短距离,如果没有相等的则输出-1. 线段树+扫描线,线段树维护的值是区间的最小值,从后往前扫,然后每次要做的事有两个: 1.判断当前这个位置 i 的数刚刚是不是出现过,假设刚刚出现的位置是 l ,如果出现过,则在线段树中把l这个位置的值更新为 l - i,同时更…
D. Vika and Segments 题目连接: http://www.codeforces.com/contest/610/problem/D Description Vika has an infinite sheet of squared paper. Initially all squares are white. She introduced a two-dimensional coordinate system on this sheet and drew n black hor…