题意:给出n个矩形,求矩形中被覆盖K次以上的面积的和。解法:整体与求矩形面积并差不多,不过在更新pushup改变len的时候,要有一层循环,来更新tree[rt].len[i],其中tree[rt].len[i]表示覆盖次数大于等于i的线段长度,以便求面积,最后只要每次都用tree[1].len[K...
分类:
其他好文 时间:
2014-08-28 11:08:19
阅读次数:
315
你家种一年地的收成暴int!你当是《日人民报》啊!
题意:
雇佣贫农种地(所以是地主喽),每个农民带一种种子,播种在他管理矩形区域,每个单位面积种一粒,区域可能会重合,那么收成高的那粒会将其他的覆盖掉,求最终收成。
分析:
一开始想的是二维线段树set,但是看到面积有sqr(10^6),即使离散化也有sqr(3*10^4),后来想到加权的线段树扫描线求面积并,但是发现覆盖种子不好维护,后来看到别人题解标题:线段树求体积并。
把价格看成高度,那么每粒种子的高度区间就可以看成[0,price),想像一下,这些"...
分类:
其他好文 时间:
2014-08-27 16:36:28
阅读次数:
203
题意:给出矩形两对角点坐标,求矩形面积并。解法:线段树+离散化。每加入一个矩形,将两个y值加入yy数组以待离散化,将左边界cover值置为1,右边界置为2,离散后建立的线段树其实是以y值建的树,线段树维护两个值:cover和len,cover表示该线段区间目前被覆盖的线段数目,len表示当前已覆盖的...
分类:
其他好文 时间:
2014-08-25 16:30:44
阅读次数:
293
题目大意:
给出各个房子阴影的长度(以区间表示)和高度,求阴影的总面积。
解题思路:矩形面积并。
下面是代码:
#include
#include
#include
//#include
#include
#include
#include
#include
#include
#include
#include
#define eps 1e-8
#d...
分类:
其他好文 时间:
2014-08-25 08:46:44
阅读次数:
227
题目大意:矩形的周长并(够大意了~)
解题思路:
扫描线,跟面积并一样,只不过处理周长的时候注意边的增加与减少。
下面是代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define e...
分类:
其他好文 时间:
2014-08-24 19:26:03
阅读次数:
251
UVA 1492 - Adding New Machine
题目链接
题意:给定一些旧机器管辖范围,现在要放一台进新机器,新机器需要空间1*m,问有多少种放法
思路:转化为求面积并的问题,先考虑横放,对于旧机器左边m个位置肯定不能放,还有边界w-m之后的位置肯定不能放,这样就可以把旧机器向左扩大m个位置,并且边界多上一块m*h大小的面积,这样求出这些面积并再用总面积减去即可,求面...
分类:
其他好文 时间:
2014-08-17 15:40:02
阅读次数:
245
题意:给你一些矩形的左上角点的坐标和右下角点的坐标,求周长并最显而易见的思路就是对于x轴和y轴做两次扫描线,对于负数的坐标进行离散化。每次增加的值是线段变化量的绝对值。具体写法和求面积并的差不多。#include #include #include #include using namespace ...
分类:
其他好文 时间:
2014-08-17 14:12:52
阅读次数:
206
解题报告
题意:
又是求面积并
思路:
又是求面积并,还被坑了,题目明明描述的是int坐标,用了double才过。。。
#include
#include
#include
#include
using namespace std;
struct Seg {
double lx,rx,h;
int v;
friend bool operator <(Seg...
分类:
其他好文 时间:
2014-08-17 13:07:12
阅读次数:
195
解题报告
题意:
给定的矩形里面有镂空的矩阵,求矩阵面积并。
思路:
直接把一个图形拆成4个矩形,进行面积并。
扫描线+线段树
#include
#include
#include
#include
#define LL __int64
using namespace std;
struct Seg
{
int lx,rx,h,v;
friend bool op...
分类:
其他好文 时间:
2014-08-16 21:10:41
阅读次数:
207
解题报告
题意:
矩形面积并。
思路:
扫描线+线段树
#include
#include
#include
#include
using namespace std;
struct Seg
{
int lx,rx,h,v;
friend bool operator < (Seg a,Seg b)
{
return a.h<b.h;
...
分类:
其他好文 时间:
2014-08-16 21:10:01
阅读次数:
241