#include <bits/stdc++.h>
using namespace std; #define pb push_back
#define lb lower_bound
#define ull unsigned ll
#define gcd(a,b) __gcd(a,b)
#define pii pair<int,int>
#define all(x) x.begin(),x.end()
#define ll long long
#define mp make_pair
//#define pi acos(-1) #define mod 1000000007
#define inf (1LL<<31)-1 map<int,vector<pii> > X,Y;
vector<pair<int,pii> > V; const int mx = 200005;
int tree[mx], pos[mx],N; int getPos(int n)
{
return (int) (lb(pos,pos+N,n)-pos) + 1;
} int update(int idx,int val)
{
while(idx<=N)
{
tree[idx] += val;
idx += (idx&-idx);
}
return 0;
} int sum(int idx)
{
int res = 0;
while(idx>0)
{
res += tree[idx];
idx -= (idx&-idx);
}
return res;
} int main()
{
int i,j,k,n;
scanf("%d",&n);
int x1,y1,x2,y2;
for(i=0;i<n;i++)
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
if(x1>x2) swap(x1,x2);
if(y1>y2) swap(y1,y2);
if(x1==x2) Y[x1].pb(mp(y1,y2));
else X[y1].pb(mp(x1,x2));
pos[N++] = y1;
pos[N++] = y2;
}
sort(pos,pos+N);
N = (int) (unique(pos,pos+N)-pos); map<int,vector<pii> > :: iterator it; ll ans = 0;
for(it=X.begin();it!=X.end();it++)
{
vector<pii>& vt = it -> second;
sort(all(vt));
int y = (it -> first);
int x1 = vt[0].first;
int x2 = vt[0].second;
int sz = vt.size();
for(i=1;i<sz;i++)
{
if(x2<vt[i].first)
{
ans += (x2-x1+1);
V.pb(mp(x1,mp(-1,y)));
V.pb(mp(x2+1,mp(1,y)));
x1 = vt[i].first;
x2 = vt[i].second;
}
else x2 = max(x2,vt[i].second);
}
ans += (x2-x1+1);
V.pb(mp(x1,mp(-1,y)));
V.pb(mp(x2+1,mp(1,y)));
} int m = V.size(), p = 0;
sort(all(V));
for(it=Y.begin();it!=Y.end();it++)
{
vector<pii>& vt = it -> second;
sort(all(vt));
int x = (it -> first); while(p<m&&x>=V[p].first)
{
int t1 = V[p].second.first;
int t2 = V[p].second.second;
t2 = getPos(t2);
update(t2,-t1);
p++;
} int y1 = vt[0].first;
int y2 = vt[0].second;
int sz = vt.size();
for(i=1;i<sz;i++)
{
if(y2<vt[i].first)
{
ans += (y2-y1+1);
y2 = getPos(y2);
y1 = getPos(y1);
ans -= sum(y2) - sum(y1-1);
y2 = vt[i].second;
y1 = vt[i].first;
}
else y2 = max(y2,vt[i].second);
}
ans += (y2-y1+1);
y2 = getPos(y2);
y1 = getPos(y1);
ans -= sum(y2) - sum(y1-1);
}
cout << ans << endl;
}

  

codeforce div 377的更多相关文章

  1. CodeForce Div 2 C. Masha and two friends

    题目链接: http://codeforces.com/contest/1080/problem/C 思路:双向延长两个矩形方块的4边,会形成一个被分割为9块的更大立方体. 计算所有的9个方框.方框中 ...

  2. Codeforces Round #377 (Div. 2) D. Exams

    Codeforces Round #377 (Div. 2) D. Exams    题意:给你n个考试科目编号1~n以及他们所需要的复习时间ai;(复习时间不一定要连续的,可以分开,只要复习够ai天 ...

  3. Codeforces Round #377 (Div. 2)

    #include <iostream> #include <stdio.h> #include <string.h> using namespace std; in ...

  4. codeforce AIM tech Round 4 div 2 B rectangles

    2017-08-25 15:32:14 writer:pprp 题目: B. Rectangles time limit per test 1 second memory limit per test ...

  5. Codeforces Round #377 (Div. 2) B. Cormen — The Best Friend Of a Man(贪心)

     传送门 Description Recently a dog was bought for Polycarp. The dog's name is Cormen. Now Polycarp has ...

  6. Codeforces Round #377 (Div. 2) D. Exams(二分答案)

    D. Exams Problem Description: Vasiliy has an exam period which will continue for n days. He has to p ...

  7. Codeforces Round #377 (Div. 2)D(二分)

    题目链接:http://codeforces.com/contest/732/problem/D 题意: 在m天中要考k个课程, 数组a中有m个元素,表示第a[i]表示第i天可以进行哪门考试,若a[i ...

  8. Codeforce#331 (Div. 2) A. Wilbur and Swimming Pool(谨以此题来纪念我的愚蠢)

    C time limit per test 1 second memory limit per test 256 megabytes input standard input output stand ...

  9. Codeforces Round #377 (Div. 2) C. Sanatorium 水题

    C. Sanatorium time limit per test 1 second memory limit per test 256 megabytes input standard input ...

随机推荐

  1. GridView的DataFormatString格式化字符串

    DataFormatString="{0:格式字符串}" 0:代表字段本身 冒号后面的代表希望的格式 比如 {0:yyyy-MM-dd}  显示的时间类型就是2016-04-11 ...

  2. 第一篇T语言实例开发(版本5.3),带错误检测的加减乘除运算器

    带错误检测的加减乘除运算器 表达式 TC综合开发工具里的表达式大体分为:计算表达式.条件表达式 计算表达式: 它一般是用在赋值过程中,或者是和条件表达式混合使用这样的表达式里只有数字运算符(如:+.- ...

  3. 第七课第六节,T语言流程语句( 版本5.0)

    select语句 seelct语句,可以说是if语句的升级版,当我们的if语句嵌套太多,或者if语句判断太多的时候,都可以考虑使用选择语句 在多条件判断的时候,选择语句的执行速度比多个if语句要快而且 ...

  4. linux常用命令 (mac ),积少成多

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  5. WCF实现客户端自动更新

    IServiceUpdate using System.IO; using System.ServiceModel; using System.ServiceModel.Web; namespace ...

  6. C# 深拷贝通用方法

    C#深拷贝通用方法(引用类型的拷贝) /// <summary> /// 深度COPY /// </summary> /// <typeparam name=" ...

  7. Array补充方法

    Array.prototype.Contain = function (item) { var arr = this; if (arr == null || arr.length == 0) { re ...

  8. 【solr】java整合solr5.0之solrj的使用

    1.首先导入solrj需要的的架包 2.需要注意的是低版本是solr是使用SolrServer进行URL实例的,5.0之后已经使用SolrClient替代这个类了,在添加之后首先我们需要根据schem ...

  9. 全景视频外包团队:U3D全景漫游(二)

    单击Ambient Light,如下 调整为 即可设置完成 14.设置第一人称浏览 删除场景中Main Camera 将Project区域的Standard Assets下的Prefabs下的Firs ...

  10. mycat 插入语句导致的一个Dobbo问题

    2017-01-03 11:11:52.621 [com.alib] (): [DUBBO] Send heartbeat to remote channel /121.43.177.8:20192, ...