还是线段树区间更新,这次不需要对线段离散化,但是要把线段纵坐标*2,可以举例模拟

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
#define maxn 8005
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
struct Edge{
int x,y1,y2,id;
bool operator<(const Edge& a)const{
return x<a.x;
}
}edge[maxn];
bool mp[maxn][maxn];
int color[maxn*<<],m,ans;
inline void pushdown(int rt){
if(color[rt]){
color[rt<<]=color[rt<<|]=color[rt];
color[rt]=;
}
}
void query(int L,int R,int id,int l,int r,int rt){
if(color[rt]){
mp[id][color[rt]]=;
return;
}
if(l==r) return;
int m=l+r>>;
if(L<=m) query(L,R,id,lson);
if(R>m) query(L,R,id,rson);
}
void update(int L,int R,int id,int l,int r,int rt){
if(L<=l && R>=r){
color[rt]=id;
return;
}
pushdown(rt);
int m=l+r>>;
if(L<=m) update(L,R,id,lson);
if(R>m) update(L,R,id,rson);
} int main(){
int T,n;
cin >> T;
while(T--){
m=-;
ans=;
memset(color,,sizeof color);
memset(mp,,sizeof mp);
cin >> n;
for(int i=;i<=n;i++){
scanf("%d%d%d",&edge[i].y1,&edge[i].y2,&edge[i].x);
edge[i].y1*=;
edge[i].y2*=;
edge[i].id=i;
m=max(edge[i].y1,m);
m=max(edge[i].y2,m);
}
sort(edge+,edge++n); for(int i=;i<=n;i++){
query(edge[i].y1,edge[i].y2,edge[i].id,,m,);
update(edge[i].y1,edge[i].y2,edge[i].id,,m,);
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(mp[i][j])
for(int k=;k<=n;k++)
if(mp[i][k] && mp[j][k])
ans++;
printf("%d\n",ans);
}
}

poj1436水平可见线的更多相关文章

  1. 仿VISIO连线

    说明: 1.未实现障碍物自动避让功能: 2.未实现添加图元到连线之间,连线自动避开新增图元功能: 后续再完善... version 1: package com.sunsheen.jfids.stud ...

  2. 「JOI 2014 Final」裁剪线

    做法一 首先将边界也视作四条裁剪线,整个平面作为一张纸,视存在 \(y = -\infty, y = +\infty, x = -\infty, x = +\infty\) 四条直线. 按照纵坐标依次 ...

  3. 学习笔记:delphi之TStringGrid

    1.说明 最近加入了一个项目组,使用的开发工具是delphi6,想想又要开始搞这个工具有点小忧伤,但没办法谁让咱就是个打杂的尼... 的需求是显示一个类似于Word/excel的那种表格,可以合并列等 ...

  4. Css中的两个重要概念:块状元素和内联元素

    一.display:block display:block就是将元素显示为块级元素,一般是其他元素的容器,可容纳内联元素和其他块状元素,块状元素排斥其他元素与其位于同一行,宽度(width)高度(he ...

  5. CSS3与页面布局学习总结(二)——Box Model、边距折叠、内联与块标签、CSSReset

    一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...

  6. 【干货分享】前端面试知识点锦集01(HTML篇)——附答案

    一.HTML部分 1.浏览器页面有哪三层构成,分别是什么,作用是什么? 构成:结构层.表示层.行为层分别是:HTML.CSS.JavaScript作用:HTML实现页面结构,CSS完成页面的表现与风格 ...

  7. SCI英文论文写作- Latex 进阶

    SCI英文论文写作- Latex 进阶   1.设置行间距的方法: %\setlength{\baselineskip}{15pt} \renewcommand{\baselinestretch}{1 ...

  8. css确定元素水平居中和垂直居中

    ---恢复内容开始--- 首先,我们在了解如何通过css了解元素水平和垂直居中之前,先要了解下html都有哪些元素,这些元素与偶有哪些分类,因为不同类别的元素的水平垂直居中方法是完全不同的,究其根本当 ...

  9. Box Model,边距折叠,内联和块标签,CSSReset

    一.盒子模型(Box Model) 1.1.宽度测试 1.2.溢出测试 1.3.box-sizing属性 1.4.利用CSS画图 二.边距折叠 2.1.概要 2.2.垂直方向外边距合并计算 三.内联与 ...

随机推荐

  1. Django xadmin引入DjangoUeditor

    Django xadmin引入DjangoUeditor 版本:python3.6.1,Django1.11.1 DjangoUeditor下载地址:https://github.com/twz915 ...

  2. 学习windows编程 day4 之 映射模式

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  3. Study 8 —— 行块元素及定位

    行&块元素display:inline;display:block;display:inline-block; 盒模型padding[内边距]padding: 上下内边距 左右内边距;padd ...

  4. Forth 语言概要 - Forth: An underview

    Forth 语言概要 - Forth: An underview 原作者 Peter Knaggs 原文标题< Forth: An underview > 译者: 未知 译文链接: htt ...

  5. 二、存储管理器--SDRAM

    2.1 硬件结构 2.1.1 硬件框图 CPU 通过存储管理器来读取 SDRAM 网卡 等外部设备,CPU不管外部设备是怎么样的,只是读存储管理器中的地址 CPU从0x30000000地址读取数据. ...

  6. pycharm永久激活(转)

    机器上安装的pycharm失效了,注册服务器也不管用了.网上找了一个比较满意的激活方法,推荐给大家: 第一步:下载jar包: 此jar包的目的就是让截获截止时间并骗过pycharm; 百度云下载地址  ...

  7. 2018-2019-2 网络对抗技术 20165320 Exp5 MSF基础应用

    2018-2019-2 网络对抗技术 20165320 Exp5 MSF基础应用 一.实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主 ...

  8. Java将list数据导出到Excel——(八)

    Java实体类 package bean; public class Question { private String timu; //题干 private String leixing; //类型 ...

  9. Junit的Assert用法

    package junit.framework; /** * A set of assert methods. Messages are only displayed when an assert f ...

  10. 说说流控制(RTS/CTS/DTR/DSR 你都明白了吗?)【转】

    转自:http://bbs.ednchina.com/BLOG_ARTICLE_129041.HTM 以前写的博文,转过来 ============== 先引用一篇网文,作者不详,因几个地方都说自己是 ...