#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的更多相关文章

  1. SPOJ CIRU The area of the union of circles (计算几何)

    题意:求 m 个圆的并的面积. 析:就是一个板子题,还有要注意圆的半径为0的情况. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024 ...

  2. sum(),max(),avg(),RATIO_TO_REPORT()--分组统计

    select id,area, sum(1) over() as 总记录数, sum(1) over(partition by id) as 分组记录数, sum(score) over() as 总 ...

  3. Oracle分析函数(一)

    一.总体介绍 分析函数如何工作 语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达式,…> <ORDER BY 表达式 < ...

  4. order_by_、group_by_、having的用法区别

    写于 2012-11-20 22:14  doc文档上. Having 这个是用在聚合函数的用法.当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算.运算完后 ...

  5. PICK定理模板

    PICK定理: S=I+O/2-1 S为多边形面积,I多边形内部的格点,O是多边形边上的格点 其中边上格点求法: 假设两个点A(x1,y1),B(x2,y2) 线段AB间格点个数为gcd(abs(x1 ...

  6. BZOJ 1062

    program candy bzoj1062; ; maxm=; maxn=; var n,len,m,i,p,t,l,r,c,d,q:longint; s:..,..maxn,..maxm] of ...

  7. oracle 10g函数大全--分析函数

    oracle分析函数--SQL*PLUS环境 一.总体介绍 12.1 分析函数如何工作 语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达 ...

  8. c++类的基础

    1.抽象: 抽象出公有特性,包括公有动作,公有数据. 2.类:类是具有相同属性和行为的一组对象的集合(变量和函数) 声明格式: class 类名(Dog) { 类体:(数据和函数成员)默认为私有成员, ...

  9. 「SCOI2015」小凸想跑步 解题报告

    「SCOI2015」小凸想跑步 最开始以为和多边形的重心有关,后来发现多边形的重心没啥好玩的性质 实际上你把面积小于的不等式列出来,发现是一次的,那么就可以半平面交了 Code: #include & ...

随机推荐

  1. iNeedle系统之国舜项目

    一.简介 本周公司接了一个小项目,是给北京国舜科技股份有限公司做一个HTTP相关的小功能产品.大概实现功能是将交换机的源数据通过解析,分析出HTTP包配对的request和response头,并把每对 ...

  2. (安装linux操作系统)

    安装linux centos系统. 准备一张centos的镜像可以去官网下载. 准备VMware Workstation官网下载. 作为初学者一般都用虚拟机安装(VMwareWorkstation), ...

  3. nginx有关.htaccess小结

    可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其实这是错误的看法nginx也是支持.hatccess的哦. 其实nginx和.htaccess一点 ...

  4. Mac OSX下卸载Nodejs

    有时手贱看到新版本就升级,升级后发现一堆模块不能用了,心情好慢慢调,但也有调不好的时候,只能卸载重装低版本的node了. 我的机器环境如下 1. Mac OSX 10.10.3 2. node为0.1 ...

  5. linux 文件管理以及其相关指令

    Linux简介 严格的来讲,Linux 不算是一个操作系统,只是一个 Linux 系统中的内核, 即计算机软件与硬件通讯之间的平台:Linux的全称是GNU/Linux,这才算是一个真正意义上的Lin ...

  6. 关于Leetcode上二叉树的算法总结

    二叉树,结构很简单,只是比单链表复杂了那么一丢丢而已.我们先来看看它们结点上的差异: /* 单链表的结构 */ struct SingleList{ int element; struct Singl ...

  7. CoCreateInstance调用COM接口伪流程

    在编写组件程序时,经常会使用CoCreateInstance直接取COM组件的接口,非常方便,那CoCreateInstance到底干了些什么事呢?1.CoCreateInstance取COM组件的接 ...

  8. 《JavaScript权威指南 第六版 中文版》(一)

    <JavaScript权威指南 第六版 中文版> 第二章 词法结构 2.1字符集 JavaScript是使用Unicode字符集编码写的. 2.1.1区分大小写 JavaScript是区分 ...

  9. AC日记——画矩形 1.5 42

    42:画矩形 总时间限制:  1000ms 内存限制:  65536kB 描述 根据参数,画出矩形. 输入 输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽 ...

  10. IT菜鸟的第2天(输入输出,数据类型,运算符的使用)

    1:输入输出 另一种读写方法: 注释:Console.Write(Line{自动换行})是输入,string xxx = Console.ReadLine();是输出. string :字符串类型   ...