Codeforces Beta Round #35 (Div. 2) E. Parade(扫描线)
只要会做,周长并,这题肯定有思路。
有个小地方敲错了,细心啊,扫描线,有一段时间没写过了,还有注意排序的问题,很重要。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
#define LL __int64
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
int que[];
int sum[*];
int cnt[*];
int ax[],ay[];
struct node
{
int h,x,c;
node(){}
node(int a,int b,int c):h(a),x(b),c(c){}
bool operator < (const node &S)const
{
if(x == S.x)
{
if(c != S.c)
return c > S.c;
else if(c == )
return h > S.h;
else if(c == -)
return h < S.h;
}
return x < S.x;
}
}mat[];
void pushup(int rt,int l,int r)
{
if(cnt[rt])
sum[rt] = que[r+] - que[l];
else if(l == r)
sum[rt] = ;
else
sum[rt] = sum[rt<<] + sum[rt<<|];
}
void update(int L,int R,int c,int l,int r,int rt)
{
int m;
if(L <= l&&r <= R)
{
cnt[rt] += c;
pushup(rt,l,r);
return ;
}
m = (l + r)>>;
if(L <= m)
update(L,R,c,lson);
if(R > m)
update(L,R,c,rson);
pushup(rt,l,r);
return ;
}
int bin(int x,int y)
{
int str,end,mid;
str = ;
end = y;
while(str <= end)
{
mid = (str+end)/;
if(que[mid] == x)
return mid;
else if(que[mid] > x)
end = mid - ;
else
str = mid + ;
}
return mid;
}
int main()
{
int n,i,h,l,r,num;
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%d",&n);
num = ;
for(i = ;i < n;i ++)
{
scanf("%d%d%d",&h,&l,&r);
que[i] = h;
mat[num++] = node(h,l,);
mat[num++] = node(h,r,-);
}
que[n] = ;
sort(que,que+n+);
sort(mat,mat+num);
int k = ;
for(i = ;i <= n;i ++)
{
if(que[i] != que[i-])
que[k++] = que[i];
}
int tn = ,pre = ;
for(i = ;i < num;i ++)
{
l = ;
r = bin(mat[i].h,k-) - ;
if(l <= r)
{
update(l,r,mat[i].c,,k-,);
}
if(pre != sum[])
{
ax[tn] = mat[i].x;
ay[tn++] = pre;
ax[tn] = mat[i].x;
ay[tn++] = sum[];
pre = sum[];
}
}
printf("%d\n",tn);
for(i = ;i < tn;i ++)
{
printf("%d %d\n",ax[i],ay[i]);
}
return ;
}
Codeforces Beta Round #35 (Div. 2) E. Parade(扫描线)的更多相关文章
- Codeforces Beta Round #35 (Div. 2)
Codeforces Beta Round #35 (Div. 2) http://codeforces.com/contest/35 A 这场的输入输出是到文件中的,不是标准的输入输出...没注意看 ...
- Codeforces Beta Round #18 (Div. 2 Only)
Codeforces Beta Round #18 (Div. 2 Only) http://codeforces.com/contest/18 A 暴力 #include<bits/stdc+ ...
- Codeforces Beta Round #80 (Div. 2 Only)【ABCD】
Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...
- Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】
Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...
- Codeforces Beta Round #79 (Div. 2 Only)
Codeforces Beta Round #79 (Div. 2 Only) http://codeforces.com/contest/102 A #include<bits/stdc++. ...
- Codeforces Beta Round #77 (Div. 2 Only)
Codeforces Beta Round #77 (Div. 2 Only) http://codeforces.com/contest/96 A #include<bits/stdc++.h ...
- Codeforces Beta Round #76 (Div. 2 Only)
Codeforces Beta Round #76 (Div. 2 Only) http://codeforces.com/contest/94 A #include<bits/stdc++.h ...
- Codeforces Beta Round #75 (Div. 2 Only)
Codeforces Beta Round #75 (Div. 2 Only) http://codeforces.com/contest/92 A #include<iostream> ...
- Codeforces Beta Round #74 (Div. 2 Only)
Codeforces Beta Round #74 (Div. 2 Only) http://codeforces.com/contest/90 A #include<iostream> ...
随机推荐
- 【PHP小项目使用MVC架构】
小项目名称是雇员管理系统. mvc是一种项目的开发模式,中文名称为模式视图控制器,是强制程序员将数据的输入.处理.输出分开的一种开发模式. 在这个小项目中,控制器使用service作为后缀名. 项目u ...
- 玩转SSRS第十篇---自定义代码
提到SSRS 那么就不得不提一下自定义代码的功能,通过自定义代码,有时候可以解决一些比较复杂的问题,比如将让指定的数据行应用指定的属性值.此篇将演示如何通过简单结构的自定义代码进行报表样式的基本设计. ...
- python调用系统命令popen、system
python调用Shell脚本,有两种方法:os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容.所以说一般我们认为popen ...
- [QCon] Scrum阅读随想
最近从群里面下载到几篇文章,看到QCon出来的相关文章,觉得都写的很不错,都是一些个大公司的非常好的方法 QCon:是为团队领导者.架构师.项目经理和高级软件开发人员量身打造的企业软件开发大会,其 ...
- STUN和TURN技术浅析
转自:http://blog.csdn.net/yu_xiang/article/details/9227023 在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分 ...
- matlab练习程序(Sepia Tone滤镜)
我手机上有一个软件实现了很多图像滤镜,挺有意思,我打算都尝试一下. 这个滤镜主要是实现老照片效果. 代码很短,我就不详细介绍了. 原图: 处理后效果: matlab代码如下: clear all;cl ...
- CentOS安装中文支持
部分文档突然成乱码了. 解决方法: 1.安装中文支持包 # yum groupinstall "Chinese Support" 2 修改# /etc/sysconfig/i18n ...
- Android studio导入eclipse项目且不改变目录结构
Android studio的安装与配置论坛当中已经有很多在此就不在细说了,现在开始说下如何在Android studio当中导入eclipse的项目且不改变其目录结构和配置,让使用eclipse的同 ...
- WebAPI接口调用身份验证
Common public interface ICacheWriter { void AddCache(string key, object value, DateTime expDate); vo ...
- Junit的简单使用
Junit是一个很好用的单元测试工具,下面是使用Junit来测试方法的简单案例: import java.util.ArrayList; import java.util.Iterator; impo ...