hdu1828 扫描线计算周长】的更多相关文章

和扫描线计算面积差不多,新加了lbd,rbd线段树来标记区间的左右两侧是否被填充(左右边界是否存在),numbd线段树统计区间有多少边 /*数据弱不用离散化,但是要处理一下坐标*/ #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; #define maxn 20005 #define lson l,m,rt<<…
线段树扫描线矩形周长并 #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #define MAXN 22222 using namespace std; int len[MAXN<<2]; bool lbd[MAXN<<2],rbd[MAXN<<2]; int numseg[MAXN<<2]; int cnt[…
(1)定义一个形状类(Shape)方法:计算周长,计算面积子类:矩形类(Rectangle) :额外的方法:differ() 计算长宽差圆形类(Circle)三角形类(Triangle)正方形类(Square) 矩形的子类生成几个不同的形状对象,放在一个Shape类型的数组里,分别求每个形状的周长和面积.如果形状对象是一个矩形,且不是正方形,则计算长宽差. package com.tiger.practice; class Shape { public double length(){ ; }…
题目显示不全,完整题目描述: (1)定义闭合图形抽象类ClosedFigure定义属性:1.形状:2.定义构造方法,给形状赋值:3.定义两个抽象方法:计算面积和计算周长:4.定义一个显示方法:显示图像形状,周长,面积:(2)定义ClosedFigure的子类椭圆Ellipse定义属性:1.长短轴定义构造方法:初始化长短轴:2.实现从父类继承来的抽象方法:[提示:椭圆求周长公式Math.PI*(this.radius_a+this.radius_b)](3)定义ClosedFigure的子类矩形类…
//扫描线矩形周长的并 POJ1177 // 我是按x轴 #include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <vector> #include <cmath> #include <cstring> // #include <memory.h> // #include <bits/st…
看这篇博客前可以看一下扫描线求面积:线段树扫描线(一.Atlantis HDU - 1542(覆盖面积) 二.覆盖的面积 HDU - 1255(重叠两次的面积))  解法一·:两次扫描线 如图我们可以先用扫描线找出来横线的周长和,再用扫描线找纵线周长和 这里以横线来举例: 横线的长度 = [现在这次总区间被覆盖的程度和上一次总区间被覆盖的长度之差的绝对值] 下面有一点要注意的(参考链接:https://www.cnblogs.com/violet-acmer/p/11461660.html) 需…
求n个图矩形放下来,有的重合有些重合一部分有些没重合,求最后总的不规则图型的轮廓长度. 我的做法是对x进行一遍扫描线,再对y做一遍同样的扫描线,相加即可.因为最后的轮廓必定是由不重合的线段长度组成的,这样理论上是对的 要注意处理高度相同的线段,把底边优先处理(在代码里就是f标记为1的线段),因为若是一个矩形的底边和另一个矩形的上边重合,则这个轮廓肯定不能算 不过POJ和HDU的数据好像都比较弱,我没进行上面的细节处理也AC了,不过一个很简单的数据就会不对,所以还是要处理一下才是真正正确的代码 我…
Picture Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4475    Accepted Submission(s): 2207 Problem Description A number of rectangular posters, photographs and other pictures of the same shap…
题意:求周长的,把矩形先进行融合后的周长,包括内周长 分析:刚看的时候感觉会跟棘手,让人无从下手,不过学过扫描线之后相信就很简单了吧(扫描线的模板- -),还是不说了,下面是一精确图,可以拿来调试数据 ***************************************************************************************************************** #include<stdio.h> #include<math…
题意:..求周长并... 解析:参考求面积并 图借鉴自:https://www.cnblogs.com/shuaiwhu/archive/2012/04/22/2464876.html 自下而上扫描 首先 加GH 接着 加 Node[1].numseg * 2 *(Edge[i+1].y - Edge[i].y)即两条竖边   然后 加 BD 但这时要减去GH  因为 LN = GH 重复加了一次 依次推理 与面积并不同的是 最上面的边不要忘了加上.. #include <iostream>…
扫描线一边扫一边算期望,细节比较多. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PII pair<int, int> #define PLI pair<LL, int> #define PLL pair<LL, LL> #define ull unsigned long long us…
总体来说也是个模板题,但是要开两个线段树来保存被覆盖一次,两次的面积 #include<iostream> #include<cstring> #include<cstdio> using namespace std; #include<algorithm> #define maxn 10000 #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 struct seg{ double l…
http://acm.hdu.edu.cn/showproblem.php?pid=1828 Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description A number of rectangular posters, photographs and other pictures of the same shape are pasted on a w…
做这道题之前,建议先做POJ 1151  Atlantis,经典的扫描线求矩阵的面积并 参考连接: http://www.cnblogs.com/scau20110726/archive/2013/04/13/3018702.html 线段树辅助——扫描线法计算矩形周长并(轮廓线):http://www.cnblogs.com/scau20110726/archive/2013/04/13/3018687.htmlhttp://blog.csdn.net/ophunter/article/det…
题目链接 Description A number of rectangular posters, photographs and other pictures of the same shape are pasted on a wall. Their sides are all vertical or horizontal. Each rectangle can be partially or totally covered by the others. The length of the b…
Code: #include<bits/stdc++.h> #define maxn 200007 #define inf 100005 using namespace std; void setIO(string s) { string in=s+".in"; freopen(in.c_str(),"r",stdin); } struct Edge { int l,r,h,flag; }edges[maxn]; int n; namespace tr…
题目背景 墙上贴着许多形状相同的海报.照片.它们的边都是水平和垂直的.每个矩形图片可能部分或全部的覆盖了其他图片.所有矩形合并后的边长称为周长. 题目描述 编写一个程序计算周长. 如图1所示7个矩形. 如图2所示,所有矩形的边界.所有矩形顶点的坐标都是整数. 解析 首先想到模拟,这题数据小,直接暴力扫转折点,统计周长的增量就得了. 其实最优解就是这么做的. TAG里有扫描线,咱就用扫描线吧. 简单来说,还是扫描线同样的思路,做线段覆盖(具体实现可以百度,我懒得写了).入边权值为+1,出边权值为-…
添加lb[],rb[]数组,来标记竖边.添加num,来计算竖边的个数,因为计算周长的时候,未覆盖的竖边都要加. #include<stdio.h> #include<stdlib.h> #include<algorithm> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define maxn 10010 struct seg { int l,r,h…
运用PHP面向对象的知识设计一个图形计算器,同时也运用到了抽象类知识,这个计算器可以计算三角形的周长和面积以及矩形的周长和面积.本图形计算器有4个页面:1.PHP图形计算器主页index.php;    2.形状的抽象类shape.class.php;    3三角形计算类triangle.class.php;    4.矩形计算类rect.class.php. PHP图形计算器代码点击下载:   php图形计算器.zip 代码分别如下: PHP图形计算器主页: 1 2 3 4 5 6 7 8…
题目背景 墙上贴着许多形状相同的海报.照片.它们的边都是水平和垂直的.每个矩形图片可能部分或全部的覆盖了其他图片.所有矩形合并后的边长称为周长. 题目描述 编写一个程序计算周长. 如图1所示7个矩形. 如图2所示,所有矩形的边界.所有矩形顶点的坐标都是整数. 输入输出格式 输入格式: 输入文件的第一行是一个整数N(0<=N<5000),表示有多少个矩形.接下来N行给出了每一个矩形左下角坐标和右上角坐标(所有坐标的数值范围都在-10000到10000之间). 输出格式: 输出文件只有一个正整数,…
题目描述 Description N(N<5000) 张矩形的海报,照片和其他同样形状的图片贴在墙上.它们的边都是垂直的或水平的.每个矩形可以部分或者全部覆盖其他矩形.所有的矩形组成的集合的轮廓称为周长.写一个程序计算周长. 所有矩形的顶点坐标均为整数.所有的坐标都在 [-10000,10000] 的范围内,并且任何一个矩形面积都为整数.结果的值可能需要 32 位有符号整数表示. 输入描述 Input Description 第1行: N,张贴在墙上的矩形的数目. 第 2..N+1行 接下来的N…
[学习笔记]线段树-扫描线补充 (IC_QQQ) (感谢 \(IC\)_\(QQQ\) 大佬授以本内容的著作权.此人超然于世外,仅有 \(Luogu\) 账号 尚可膜拜) [学习笔记]线段树详解(全) 上题: 给出N个矩形,求最后所得的图形的面积(周长). 比如这个图形,我们去掉多余的线条,看看它最后的图形: 看到这个花里胡哨的图形,它的面积就是抛开红色的其他部分面积和. 周长呢?就是下面这个图形的红色边长度. 问题是怎么求,这就需要用到扫~描~线~了. 先解决简单一些的面积: 我们假象有一条垂…
题目描述 墙上贴着许多形状相同的海报.照片.它们的边都是水平和垂直的.每个矩形图片可能部分或全部的覆盖了其他图片.所有矩形合并后的边长称为周长. 编写一个程序计算周长. 如图1所示7个矩形. 如图2所示,所有矩形的边界.所有矩形顶点的坐标都是整数. 输入输出格式 输入格式: 输入文件的第一行是一个整数\(N(0<=N<5000)\),表示有多少个矩形.接下来\(N\)行给出了每一个矩形左下角坐标和右上角坐标(所有坐标的数值范围都在\(-10000\)到\(10000\)之间). 输出格式: 输…
扫描线求周长: hdu1828 Picture(线段树+扫描线+矩形周长) 参考链接:https://blog.csdn.net/konghhhhh/java/article/details/78236036 假想有一条扫描线,从左往右(从右往左),或者从下往上(从上往下)扫描过整个多边形(或者说畸形..多个矩形叠加后的那个图形).如果是竖直方向上扫描,则是离散化横坐标,如果是水平方向上扫描,则是离散化纵坐标.下面的分析都是离散化横坐标的,并且从下往上扫描的. 扫描之前还需要做一个工作,就是保存…
题意:求矩形面积并 分析:使用线段树+扫描线...因为坐标是浮点数的,因此还需要离散化! 把矩形分成两条边,上边和下边,对横轴建树,然后从下到上扫描上去,用col表示该区间有多少个下边,sum代表该区间内被覆盖的线段的长度总和 这里线段树的一个结点并非是线段的一个端点,而是该端点和下一个端点间的线段,所以题目中r+1,r-1的地方可以自己好好的琢磨一下 详细分析下扫描线 第一次完全看懂扫描线. 像这题的样例: 这么两个矩形,现在要求它的面积并. 假设我门将横边座位扫描线,即每个矩形有两条扫描线,…
本文所述方法可以检测同一图像中的多个圆形(准确的说,应该是闭合图像). 在Matlab2010a中可以实现. 附录效果图: %颗粒圆度 clear;close all; %% %读取源图像 I = imread('999.png'); figure;imshow(I); %% %灰度化.取反 h = rgb2gray(I); figure;imshow(h);%灰度图像 h = imcomplement(h);%取反 figure;imshow(h); %% %中值滤波.二值化 h = medf…
扫描线求周长,可以看成两条线,一条扫x轴,一条扫y轴,然后这两天线扫过去的 周长加起来,就是周长了 #include<map> #include<set> #include<ctime> #include<cmath> #include<stack> #include<queue> #include<string> #include<vector> #include<cstdio> #include…
[BZOJ1818][CQOI2010]内部白点(树状数组,扫描线) 题面 BZOJ 题解 不难发现\(-1\)就是在搞笑的. 那么对于每一行,我们显然可以处理出来最左和最右的点,那么等价于我们在横着的方向上得到了若干条线段,同理,在竖直方向上也得到了若干条线段,那么最终的答案就是这些线段的交点个数加上原先就有的白点个数,再减去交点上的黑点数目. 直接离散没有任何问题,那么直接扫描线计算即可. 代码有点丑. #include<iostream> #include<cstdio> #…
浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1828 扫描线求周长.如果你不知道什么是扫描线可以先去做这题:https://www.cnblogs.com/AKMer/p/9951300.html 每次扫描线上变化的长度就是周长的一部分.横着做一遍竖着做一遍就行了. 如果两条边\(pos\)相同应该先加边后删边,否则重叠部分会多算.…
主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下: 参数 说明 DOUBLE dX1 直线的开始点x坐标 DOUBLE dY1 直线的开始点y坐标 DOUBLE dX2 直线的结束点x坐标 DOUBLE dY2 直线的结束点y坐标 _DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 说明 DOUBLE dPosX >文字的位置的X坐标 DOUBLE dPosY 文字的位置的Y坐标 BSTR pszText 文字内容字符串 DOUB…