codeforce div 377
- #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的更多相关文章
- CodeForce Div 2 C. Masha and two friends
题目链接: http://codeforces.com/contest/1080/problem/C 思路:双向延长两个矩形方块的4边,会形成一个被分割为9块的更大立方体. 计算所有的9个方框.方框中 ...
- Codeforces Round #377 (Div. 2) D. Exams
Codeforces Round #377 (Div. 2) D. Exams 题意:给你n个考试科目编号1~n以及他们所需要的复习时间ai;(复习时间不一定要连续的,可以分开,只要复习够ai天 ...
- Codeforces Round #377 (Div. 2)
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; in ...
- 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 ...
- 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 ...
- 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 ...
- Codeforces Round #377 (Div. 2)D(二分)
题目链接:http://codeforces.com/contest/732/problem/D 题意: 在m天中要考k个课程, 数组a中有m个元素,表示第a[i]表示第i天可以进行哪门考试,若a[i ...
- 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 ...
- Codeforces Round #377 (Div. 2) C. Sanatorium 水题
C. Sanatorium time limit per test 1 second memory limit per test 256 megabytes input standard input ...
随机推荐
- JQUERY添加、删除元素、eq()方法;
一.jQuery - 添加元素 1.append() - 在被选元素内部的结尾插入指定内容 2.prepend() - 在被选元素内部的开头插入指定内容 3.after() - 在被选元素之后插入内容 ...
- 关于nginx配置的不完全总结
请参考官方: http://wiki.nginx.org/HttpRewriteModule#Synopsis 关于缓存大小权限 error log 有如下日志:an upstream respons ...
- chrome 49 版本 跨越 --args --disable-web-security --user-data-dir
转载: 做前端的,用Ajax获取数据,是常有的事情,同域下自然没问题了,如果是不同域获取数据,浏览器就有个同源策略的限制. 如图: Origin * is not allowed by Access- ...
- LEETCODE —— Best Time to Buy and Sell Stock II [贪心算法]
Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the price of a ...
- Highcharts中文参考手册
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习.个人网站和非商业用途使用.HighCh ...
- win7下IIS错误:"无法访问请求的页面,因为该页的相关配置数据无效"的解决方法(转)
今天新装win7,然后在IIS下布署了一个网站,布署完成后运行,提示如下错误:HTTP 错误 500.19 - Internal Server Error无法访问请求的页面,因为该页的相关配置数据无效 ...
- 4、java中有专门的的函数对数组进行排序
在java.util包中的Arrays提供了众多的排序算法可以应用.
- 【Java数据格式化】使用DecimalFormat 对Float和double进行格式化
格式化包括如下内容: 基本用法 金钱格式: 科学计数法: 百分比计数法: 嵌入文本: package com.sssppp.NumberFormat; import java.text.Decimal ...
- My WelcomeApplet
import java.applet.*; import java.awt.*; import java.awt.event.*; public class WelcomeApplet extends ...
- 黄聪: PHP WkHtmlToPdf/WkHtmlToImage 将网页直接转换成pdf和图片
function convert($type='pdf') { $filename=time(); $url=$this->input->get("url"); if( ...