Rectangles Area Sum
#include<iostream> #include<stdio.h> #include<math.h> #include<string.h> #include<algorithm> using namespace std; #define re(i,n) for(int i=0;i<n;i++) ; ; typedef long long ll; ],y[maxn*],xsz,ysz; struct Node{ int fy,ty; int x; int type; }a[maxn*]; bool cmp(const Node&m,const Node&n){ return m.x<n.x; } struct Data{ int cnt,len; }da[maxn*]; int fy,ty,type; void insert(int id,int f,int t){ //printf("inserting node %d ,from %d,to %d,fy %d ,ty %d,type %d\n",id,y[f],y[t],fy,ty,type); if(fy<=y[f]&&ty>=y[t]){ da[id].cnt+=type; ){ ; ].len+da[id<<|].len; }else da[id].len=y[t]-y[f]; return; } ; |,mid,t); ,f,mid); )da[id].len=da[id<<].len+da[id<<|].len; else da[id].len=y[t]-y[f]; } int main(){ int n; while(cin>>n&&n){ re(i,n){ scanf(],&y[i*],&x[i*+],&y[i*+]); a[i*].fy=a[i*+].fy=min(y[i*],y[i*+]); a[i*].ty=a[i*+].ty=max(y[i*],y[i*+]); a[i*].x=min(x[i*],x[i*+]); a[i*+].x=max(x[i*],x[i*+]); a[i*].type=; a[i*+].type=-; } sort(y,y+n*),ysz=unique(y,y+n*)-y; sort(a,a+n*,cmp); ll ans=; memset(da,,sizeof(da)); fy=a[].fy,ty=a[].ty,type=a[].type; insert(,,ysz-); //cout<<"The first time "<<da[1].cnt<<endl; //cout<<"ans is "<<ans<<endl; ;i<n*;i++){ ans+=(ll)(a[i].x-a[i-].x)*da[].len; ans%=mod; fy=a[i].fy,ty=a[i].ty,type=a[i].type; //printf("i=%d\t ans=%lld\t ",i,ans); insert(,,ysz-); } cout<<ans<<endl; } ; }
Rectangles Area Sum的更多相关文章
- SPOJ CIRU The area of the union of circles (计算几何)
题意:求 m 个圆的并的面积. 析:就是一个板子题,还有要注意圆的半径为0的情况. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024 ...
- sum(),max(),avg(),RATIO_TO_REPORT()--分组统计
select id,area, sum(1) over() as 总记录数, sum(1) over(partition by id) as 分组记录数, sum(score) over() as 总 ...
- Oracle分析函数(一)
一.总体介绍 分析函数如何工作 语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达式,…> <ORDER BY 表达式 < ...
- order_by_、group_by_、having的用法区别
写于 2012-11-20 22:14 doc文档上. Having 这个是用在聚合函数的用法.当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算.运算完后 ...
- PICK定理模板
PICK定理: S=I+O/2-1 S为多边形面积,I多边形内部的格点,O是多边形边上的格点 其中边上格点求法: 假设两个点A(x1,y1),B(x2,y2) 线段AB间格点个数为gcd(abs(x1 ...
- BZOJ 1062
program candy bzoj1062; ; maxm=; maxn=; var n,len,m,i,p,t,l,r,c,d,q:longint; s:..,..maxn,..maxm] of ...
- oracle 10g函数大全--分析函数
oracle分析函数--SQL*PLUS环境 一.总体介绍 12.1 分析函数如何工作 语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达 ...
- c++类的基础
1.抽象: 抽象出公有特性,包括公有动作,公有数据. 2.类:类是具有相同属性和行为的一组对象的集合(变量和函数) 声明格式: class 类名(Dog) { 类体:(数据和函数成员)默认为私有成员, ...
- 「SCOI2015」小凸想跑步 解题报告
「SCOI2015」小凸想跑步 最开始以为和多边形的重心有关,后来发现多边形的重心没啥好玩的性质 实际上你把面积小于的不等式列出来,发现是一次的,那么就可以半平面交了 Code: #include & ...
随机推荐
- Python 标准异常
异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的 ...
- 猜拳游戏GuessGame源码
该游戏是一款比较不错的猜拳游戏GuessGame源码案例,GuessGame——猜拳游戏,这也是我自己的第一款休闲类的游戏案例,游戏实现也比较简单的,希望这个能够帮大家的学习和使用,更多安卓源码尽在源 ...
- redis安装及基础操作(1)
============================================================= 编译安装 0.环境 Linux:centos6.5 redis:3.0.5 ...
- KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- PHP实现文件上传下载——心在忙而已
这一周都没有写什么东西,是啊,一周时间都没有学习太多新的东西,除了开车. 妈蛋啊,天天中午去学车然后两周没有午觉的日子还是很崩溃的,加上之后工作压力带来的心忙,宝宝不开心啊. 不过,也是自己不是那么能 ...
- QC学习一:Windows环境中Quality Center 9.0安装详解
一.安装前准备 1.安装环境:windows XP.SQL Server2005 2.准备安装文件:Quality Center 9.0 (qc10以上,包括qc10,qc只支持安装在服务器操作系统上 ...
- bzoj2548[Cstc2002]灭鼠行动
Description 最近,有一些繁殖力很强的老鼠在下水道非常猖獗,灭鼠特工队正在计划消灭这些老鼠.下水道只有东西方向和南北方向的管道,如图所示. 灭鼠特工队的队员拥有强大的武器.他们将在某些时刻t ...
- CoreAnimation笔记
核心动画继承结构 CoreAnimation Core Animation是直接作用在CALayer上的(并非UIView上)非常强大的跨Mac OS X和iOS平台的动画处理API,Core Ani ...
- AI图片剪切
来源:http://tieba.baidu.com/p/1203332701?pid=14163166977&cid=78618096662&from=prin#78618096662 ...
- POJ 3259 Wormholes (判负环)
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 46123 Accepted: 17033 Descripti ...