2017 ACM/ICPC 南宁区 网络赛 Overlapping Rectangles
2017-09-24 20:11:21
writer:pprp
找到的大神的代码,直接过了
采用了扫描线+线段树的算法,先码了,作为模板也不错啊
题目链接:https://nanti.jisuanke.com/t/17313
题意:给你很多个矩形,让你得到矩形的面积,重叠部分只算一次
代码如下:
//ac F
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm> using namespace std;
typedef long long ll;
const int maxn=1e6+; #define mm(a) memset(a,0,sizeof(a)) int num1[maxn*];
int num[maxn*],X[maxn*];
struct edge
{
int l,r,h;
int s;//s为1是下边,s为-1是上边
edge() {};
edge(int a,int b,int c,int d) : l(a),r(b),h(c),s(d) {}
bool operator<(const edge &n)const
{
return h<n.h;
}
} ss[maxn]; void pushup(int le,int ri,int node)
{
if(num1[node])
num[node]=X[ri+]-X[le];//在更新的时候,可能两个矩阵有重叠,这样就不能像以前那么更新,而是将le和ri传入
else if(le==ri)
num[node]=; //然后将X[ri+1]-X[le]的值进行更新,避免了重复的长度
else
num[node]=num[node<<]+num[node<<|];
}
void update(int l,int r,int add,int le,int ri,int node)
{
if(l<=le&&ri<=r)
{
num1[node]+=add;//与懒惰标记类似
pushup(le,ri,node);
return ;
}
int t=(le+ri)>>;
if(l<=t) update(l,r,add,le,t,node<<);
if(r>t) update(l,r,add,t+,ri,node<<|);
pushup(le,ri,node);
}
int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
if(n == )
{
cout << "*" << endl;
break;
}
int a,b,c,d;
int k=;
for(int i=; i<n; i++)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
X[k]=a;
ss[k++]=edge(a,c,b,);
X[k]=c;
ss[k++]=edge(a,c,d,-);
}
sort(X,X+k);
sort(ss,ss+k);
int k1=;
for(int i=; i<k; i++) //对X进行离散化
{
if(X[i]!=X[i-]) X[k1++]=X[i];
}
mm(num);
mm(num1);
int ans=;
for(int i=; i<k-; i++)
{
int l=lower_bound(X,X+k1,ss[i].l)-X;
int r=lower_bound(X,X+k1,ss[i].r)-X-;
update(l,r,ss[i].s,,k1-,);
ans+=num[]*(ss[i+].h-ss[i].h);//num[1]为当前横坐标的总长度
}
cout << ans << endl;
}
return ;
}
2017 ACM/ICPC 南宁区 网络赛 Overlapping Rectangles的更多相关文章
- 【2017 ACM/ICPC 乌鲁木齐赛区网络赛环境测试赛 E】蒜头君的排序
[链接]h在这里写链接 [题意] 在这里写题意 [题解] 莫队算法+树状数组. 区间增加1或减少1. 对逆序对的影响是固定的. (用冒泡排序变成升序的交换次数,就是逆序对的个数) [错的次数] 0 [ ...
- 2017ICPC南宁赛区网络赛 Overlapping Rectangles(重叠矩阵面积和=离散化模板)
There are nnn rectangles on the plane. The problem is to find the area of the union of these rectang ...
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 M. Frequent Subsets Problem【状态压缩】
2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 M. Frequent Subsets Problem 题意:给定N和α还有M个U={1,2,3,...N}的子集,求子集X个数,X满足:X是U ...
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 Overlapping Rectangles
There are nn rectangles on the plane. The problem is to find the area of the union of these rectangl ...
- 2014 ACM/ICPC 鞍山赛区网络赛(清华命题)
为迎接10月17号清华命题的鞍山现场赛 杭电上的题目 Biconnected(hdu4997) 状态压缩DP Rotate(hdu4998) 相对任一点的旋转 Overt(hdu4999 ...
- 2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest
2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest A - Arranging Wine 题目描述:有\(R\)个红箱和\(W\)个白箱,将这 ...
- 2017 ACM/ICPC Asia Regional Shenyang Online spfa+最长路
transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 132768/1 ...
- 2017 ACM ICPC Asia Regional - Daejeon
2017 ACM ICPC Asia Regional - Daejeon Problem A Broadcast Stations 题目描述:给出一棵树,每一个点有一个辐射距离\(p_i\)(待确定 ...
- 2017 ACM/ICPC Shenyang Online SPFA+无向图最长路
transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 132768/1 ...
随机推荐
- 属性attribute和property的区别
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...
- 如何在python项目中写出像Django中一样功能的settings
一 核心文件目录结构 二 实现代码 resdme: 在实现此功能主要用到的知识点及模块: 1.反射 3.内置方法dir # 全局配置 NAME = 'root' # 用户配置 NAME = 'pe ...
- mysql表的完整性约束
概览 为了防止不符合规范的数据进入数据库,在用户对数据进行插入.修改.删除等操作时,DBMS自动按照一定的约束条件对数据进行监测, 使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确.有效 ...
- JSON 序列化与反序列化(二)使用TypeReference 构建类型安全的异构容器
1. 泛型通常用于集合,如Set和Map等.这样的用法也就限制了每个容器只能有固定数目的类型参数,一般来说,这也确实是我们想要的. 然而有的时候我们需要更多的灵活性,如数据库可以用任意多的Column ...
- HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'NTLM'。
情况:WCF服务在浏览器中可以正常浏览,但是通过程序调用提示: HTTP request is unauthorized with client authentication scheme 'Anon ...
- 对BeforeSuite和BeforeTest的理解
在BeforeSuite.BeforeTest.BeforeClass.BeforeMethod及BeforeGroups中,后面三个注解都比较好理解,其实BeforeSuite.BeforeTest ...
- jsonp解决跨域问题
日常开发网页中,时常遇到跨域问题,通常解决办法:后端提供的接口支持jsonp格式,前端采用dataType:jsonp. 一:Jquery封装的AJAX,dataType:jsonp格式的方法: $. ...
- 推荐系统第5周--- 基于内容的推荐,隐语义模型LFM
基于内容的推荐
- 美化MFC 之调整静态文本的颜色 字体。 用于添加公司标题 联系方式 口号等数据
很多人都觉得自己的程序的界面不那么美观,往往VC默认产生的对话框比较单调, 因此很多人往往找到很多其它的控件对对话框进行美化修饰, 例如给静态控件设置字体,设置背景颜色等等, 其实这些完全可以由VC自 ...
- 关于/proc/进程idpid/fd ,根据fd来查找连接
当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽 ...