atlantis

【征稿】SCI/EI快速检索 | 2020计算机科学领域系列会议重磅来袭

你说的曾经没有我的故事 提交于 2021-01-13 00:30:20
2020年1-2月,由 AEIC 学术交流中心举办的 “2020计算机科学领域系列学术会议” 即将到来,届时国内外专家学者齐聚一堂,分享计算机领域的最新进展和研究成果。 该系列会议将分别对 “先进算法与控制工程”、“电气、电子和计算机工程”、“电子技术与信息科学” 系列热点科研课题进行交流探讨。 本次推荐的会议均 提交至EI检索,且额外征集SCI论文 ,欢迎大家前来投稿参会。 第四届先进算法与控制工程国际论坛 (IWAACE 2020) 该会议定于 2020年2月21日至23日 在 中国深圳 隆重举行,届时会议将围绕 先进算法与控制工程研究领域 展开讨论。 1.出版收录检索: EI, Scopus, SCI 本会议投稿经过2-3位组委会专家严格审核之后,最终所录用的论文将被 Key Engineering Materials (ISSN: 1662-9795) 出版,并提交至 EI Compendex, Scopus检索 。目前该期刊检索非常稳定。 2. SCI期刊征稿,录满截止,欢迎投稿! (只能通过邮箱投稿,并且投稿的时候务必备注SCI) 期刊 1 (ISSN: 1546-2218, IF=3.024): CMC-Computers Materials & Continua 期刊 2 (ISSN: 1687-5281, IF=1.534): EURASIP Journal on

扫描线——POJ1151

此生再无相见时 提交于 2020-12-13 07:06:37
平面上有若干个矩形,求矩形相互覆盖的面积。为方便起见,矩形的边均平行于坐标轴。 我们根据 容斥原理 , 矩形相互覆盖的面积 即为 所有矩形的面积和 减去 所有矩形所覆盖的面积 即可。 而现在问题是 如何求得所有矩形所覆盖的面积 。即 让我们人类去做,由于这是个由矩形拼接成的多边形,很难去直接求它的面积,求该图形的面积一个常规的方法就是 割补法 。 此处我们采用割,割成一个一个矩形出来。 这样就很方便地去求了。 计算机无法直观地看出图形,进而去求出长宽进而求出矩形面积。 那该如何让计算机来求? 我们看这些图形, 一块一块 的,最下面的一块,可以想象成原矩形 下面矩形最下面的边,向上平移时“ 刷 ”出来的紫矩形,当碰到上面矩形的底边时,两条边 合并 ,再向上平移时“ 刷 ”出红色矩形,然后碰到下面矩形的顶边,去掉了顶边对应的底边,因为两边重合的部分有两条边贡献,所以去掉顶边线段后,重合部分还在,继续向上平移,“ 刷 ”出了蓝色矩形。 有序,易行,计算机可做! 其实这就是扫描线在干的事,一条透明的线从下向上平移,遇到底边,则扫描线在底边所在的范围有了颜色,这样向上平移的时候就“ 刷 ”出了颜色,遇到顶边,则扫描线在顶边的范围就没了颜色,之后该部分就没有颜色了。 所以现在的问题是, 如何维护扫描线 。 即我们要维护, 扫描线有底边贡献的范围 ,以及 该范围被几条底边所贡献 ,且

Atlantis HDU

天涯浪子 提交于 2020-12-13 06:58:25
扫描线的模板题,先把信息接收,然后排序,记录下上边和下边,然后用一条虚拟的线从下往上扫。如果我扫到的是下边,那么久用线段树在这个区间内加上1,表示这个区间现在是有的,等我扫描到上边的时候在加上-1,把之前的消掉,然后线段树维护区间内的长度,这里不是直接用下标维护,而是需要另一个数组来维护,每次记录我当前的下标在原本的图中的长度。 在update部分用一个点表示我这个点以后的一个长度为1的区间,然后这样算出来的sum[1]就是我现在线段树里包括的区间大小,然后用现在的区间大小去乘上这一部分的高度,然后每次相加,就可以了 #include<map> #include < set > #include <ctime> #include <cmath> #include <stack> #include <queue> #include < string > #include <vector> #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> #define lowbit(x) (x & (-x)) typedef unsigned long long int ull; typedef long long int ll; const double

P

感情迁移 提交于 2020-12-13 06:58:14
There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of the island. But unfortunately, these maps describe different regions of Atlantis. Your friend Bill has to know the total area for which maps exist. You (unwisely) volunteered to write a program that calculates this quantity. InputThe input file consists of several test cases. Each test case starts with a line containing a single integer n (1<=n<=100) of available maps. The n following lines describe one map each. Each of these lines contains four

【POJ1151】Atlantis(线段树,扫描线)

戏子无情 提交于 2020-12-13 06:45:08
#【POJ1151】Atlantis(线段树,扫描线) ##题面 Vjudge ##题解 学一学扫描线 其实很简单啦 这道题目要求的就是若干矩形的面积和 把扫描线平行于某个轴扫过去(我选的平行$y$轴扫) 这样只需要求出每次和$x$轴覆盖的长度 就可以两两相乘,求出面积 最后累计和就行啦 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #include<map> #include<vector> #include<queue> using namespace std; #define ll long long #define RG register #define MAX 500 #define lson (now<<1) #define rson (now<<1|1) struct Node{double x1,x2,y,w;}p[MAX]; bool operator<(Node a,Node b){return a.y<b.y;} double S[MAX]; int top; int n,tot; struct SegmentTreeNode { double ss; int ly

『线段树及扫描线算法 Atlantis』

試著忘記壹切 提交于 2020-12-13 05:17:46
<font size=3 face="微软雅黑"> <更新提示> 入门看这边 『线段树 Segment Tree』 。 <第一次更新> </font> <font size=3 face="微软雅黑"> <正文> 扫描线 扫描线是一种解决一类平面内统计问题的算法,通常会借助线段树来实现,我们通过一道例题来引入这个算法。 Atlantis Description There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of the island. But unfortunately, these maps describe different regions of Atlantis. Your friend Bill has to know the total area for which maps exist. You (unwisely) volunteered to write a program that calculates this quantity. Input Format The input consists of several test

矩形面积并、矩形面积交、矩形周长并(线段树、扫描线总结)(转载)

社会主义新天地 提交于 2020-04-30 04:19:42
HDU 1542 [POJ 1151] Atlantis (矩形面积并) 题意: 求 N <= 100 个 矩 形 的 面 积 并 分析: 离散化: 这些技巧都是老生常谈的了, 不然浮点数怎么建树, 离散化 x 坐标就可以了 扫描线: 首先把矩形按 y 轴分成两条边, 上边和下边, 对 x 轴建树, 扫描线可以看成一根平行于 x 轴的直线. 从 y = 0 开始往上扫, 下边表示要计算面积 + 1 , 上边表示已经扫过了 − 1 , 直到扫到最后一条平行于 x 轴的边 但是真正在做的时候, 不需要完全模拟这个过程, 一条一条边地插入线段树就好了 线段树: 用于动态维护扫描线在往上走时, x 轴哪些区域是有合法面积的 p s : 这种线段树是不用 l a z y 的, 因为不用 p u s h _ d o w n , 为啥不用 p u s h _ d o w n , 因为没有查询操作 扫描线扫描的过程(建议配合代码模拟) p s : 无 论 说 的 再 好 , 都 不 如 自 己 在 纸 上 模 拟 一 遍 扫 描 的 过 程 , 我 自 己 学 的 时 候 模 拟 了 很 多 遍 以下图转载自@kk303的博客 初始状态 扫到最下边的线, 点 1 → 3 更新为 1 扫到第二根线, 此时 S = l c n t ! = 0 ∗ h 两 根 线 之 间 , 得到绿色的面积,

线段树->面积并 Atlantis HDU - 1542

廉价感情. 提交于 2020-01-24 15:23:13
题目链接:https://cn.vjudge.net/problem/HDU-1542 题目大意:求面积并 具体思路:我们首先把矩形分割成一横条一横条的,然后对于每一个我们给定的矩形,我们将储存两个点,一个是左下角,一个是右上角。对于左下角的点,我们将他标记为-1,对于右上角的点,我们把它标记成1,-1代表这块区域的面积是需要减去的,1代表这块区域的面积是需要加上的,然后我们通过扫描线的形式,从y轴从下往上扫就可以了。 离散化的过程,数组还是尽量从0开始吧,因为在更新的过程中会出现0的情况,如果下标从1开始存储的话,会mle的,,,无限递归? ps:这个线段树的区间分开的时候和之前的不太一样,这个线段树{1,5}分开的是{1,3}和{4,5} 注意这个线段树每一个节点代表的是区间,节点1-3代表的是区间1-4,也就是 节点1代表 区间1-2 ,然后我们查询1-4 的时候,直接查询节点1-3就可以了,更新区间1-3的时候,更新节点1-2就可以了。 AC代码: 1 #include <iostream> 2 #include <cstdio> 3 #include <string> 4 #include <cstring> 5 #include <algorithm> 6 #include <cmath> 7 #include <vector> 8 #include <queue> 9

线段树->面积并 Atlantis HDU - 1542

孤街醉人 提交于 2020-01-05 03:12:06
题目链接:https://cn.vjudge.net/problem/HDU-1542 题目大意:求面积并 具体思路:我们首先把矩形分割成一横条一横条的,然后对于每一个我们给定的矩形,我们将储存两个点,一个是左下角,一个是右上角。对于左下角的点,我们将他标记为-1,对于右上角的点,我们把它标记成1,-1代表这块区域的面积是需要减去的,1代表这块区域的面积是需要加上的,然后我们通过扫描线的形式,从y轴从下往上扫就可以了。 离散化的过程,数组还是尽量从0开始吧,因为在更新的过程中会出现0的情况,如果下标从1开始存储的话,会mle的,,,无限递归? ps:这个线段树的区间分开的时候和之前的不太一样,这个线段树{1,5}分开的是{1,3}和{4,5} 注意这个线段树每一个节点代表的是区间,节点1-3代表的是区间1-4,也就是 节点1代表 区间1-2 ,然后我们查询1-4 的时候,直接查询节点1-3就可以了,更新区间1-3的时候,更新节点1-2就可以了。 AC代码: 1 #include <iostream> 2 #include <cstdio> 3 #include <string> 4 #include <cstring> 5 #include <algorithm> 6 #include <cmath> 7 #include <vector> 8 #include <queue> 9