题目描述

给定N个三角形,和M条直线,直线要么平行于X轴,要么平行于Y轴,问这M条直线 分别经过多少个三角形内部 (注意是内部即分开的两个多边形的面积均大于零)。

输入输出格式

输入格式:

第一行一个正整数 N(2≤N≤100000)表示三角形的个数。 接下来N行,每行三个坐标(x1​,y1​), (x2​,y2​), (x3​,y3​) 表示三点,且这三点不共线。所有 坐标均为非负整数且小于106,三角形可以重叠。 接下来一个正整数M (2≤M≤100000)(,表示M个直线。 接下来M行,每行描述一条直线。"x =c"或"y= c" (注意等号两边的空格) c为非负整数,且小于10^

输出格式:

每一条直线输出一个整数,表示它穿过的三角形的个数。

输入输出样例

输入样例#1:

3
1 0 0 2 2 2
1 3 3 5 4 0
5 4 4 5 4 4
4
x = 4
x = 1
y = 3
y = 1
输出样例#1:

0
1
1
2
输入样例#2:

4
2 7 6 0 0 5
7 1 7 10 11 11
5 10 2 9 6 8
1 9 10 10 4 1
4
y = 6
x = 2
x = 4
x = 9
输出样例#2:

3
2
3
2

说明

  • 对于40%的数据M≤300
  • 另有40%的数据,所有三角形的坐标小于1000.

题目解读

因为直线要么平行于X轴,要么平行于Y轴

所以我们把每个三角形 简化成 其X,Y方向上投影的两条线段,然后判断所求直线与这些线段的交点个数就好了

这个坐标都是整点,于是把每条线段覆盖的区间+1,这样的话 就能直接得到 所求点被多少条线段覆盖了

区间加可以直接通过差分实现

#include<cstdio>
#include<iostream>
#include<algorithm>
#define MAXN 1000005
int N,M,p[MAXN],t[MAXN],P[MAXN],T[MAXN];
char c[];
using namespace std;
int main()
{
scanf("%d",&N);
for(int i=;i<=N;i++){
int xa,xb,xc,ya,yb,yc,u,d,l,r;
scanf("%d%d%d%d%d%d",&xa,&ya,&xb,&yb,&xc,&yc);
r=max(xa,xb),l=min(xa,xb),u=max(ya,yb),d=min(ya,yb);
r=max(xc, r),l=min(xc, l),u=max(yc, u),d=min(yc, d);
t[l+]++,t[r]--,p[d+]++,p[u]--;           //差分数组,区间(l,r) +1
}
for(int i=;i<=;i++)
T[i]=T[i-]+t[i],P[i]=P[i-]+p[i];
scanf("%d",&M);
for(int i=;i<=M;i++)
{
int z;cin>>c[]>>c[]>>z;
if(c[]=='x')printf("%d\n",T[z]);
if(c[]=='y')printf("%d\n",P[z]);
}
// system("pause");
return ;
}

洛谷4623 [COCI2012-2013#6] BUREK的更多相关文章

  1. 洛谷 P1979 [ NOIP 2013 ] 华容道 —— bfs + 最短路

    题目:https://www.luogu.org/problemnew/show/P1979 真是一道好题... 首先考虑暴力做法,应该是设 f[i][j][x][y] 记录指定棋子和空格的位置,然后 ...

  2. 【题解】洛谷P1967 [NOIP2013TG] 货车运输(LCA+kruscal重构树)

    洛谷P1967:https://www.luogu.org/problemnew/show/P1967 思路 感觉2013年D1T3并不是非常难 但是蒟蒻还是WA了一次 从题目描述中看出每个点之间有许 ...

  3. 洛谷 P3375 【模板】KMP字符串匹配

    我这段时间因为字符串太差而被关了起来了(昨晚打cf不会处理字符串现场找大佬模板瞎搞,差点就凉了),所以决定好好补一下字符串的知识QAQ,暂时先学习kmp算法吧~ 题目链接:https://www.lu ...

  4. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  5. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  6. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  7. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  8. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  9. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

随机推荐

  1. 漫谈 Google 的 Native Client(NaCl) 技术(二)---- 技术篇(兼谈 LLVM)

    转自:http://hzx5.blog.163.com/blog/static/40744388201172531637729/ 漫谈 Google 的 Native Client(NaCl) 技术( ...

  2. Blender软件导出的obj数据格式文件内容解读

    [cube.obj] # Blender v2.78 (sub 0) OBJ File: '' # www.blender.org mtllib cube.mtl #这里是引用了一个外部材质文件cub ...

  3. botot framework选择下拉框

    1,下拉框不能输入文字,如图: 方法: select from list    id=xxx   要选择的数据 2.下拉框可输入文字,如图: 方法: click element   di=xxx   ...

  4. CAD教程----圆的优化命令viewres

    CAD软件为了节省内存加快打开图纸的速度,会在显示圆形的时候,用很粗燥的直线表示园,这时我们可以不节省内存,使用viewres将圆形完整的显示出来. 这个值设置的越大,圆越圆(好绕口!)

  5. [SharePoint2010开发入门经典]10、使用SPS2010构建面向服务的应用程序

    本章概要: 1.使用SPS自带的web service 2.构建自定义web service 3.使用不同的客户端解决方案部署自定义站点

  6. Android设计模式(三)--装饰模式

    1.定义: Attach additional responsibilities to an object dynamically keeping the same interface.  Decoa ...

  7. Android4.0设置界面改动总结(二)

    今年1月份的时候.有和大家分享给予Android4.0+系统设置的改动:Android4.0设置界面改动总结 时隔半年.回头看看那个时候的改动.事实上是有非常多问题的,比方说: ①.圆角Item会影响 ...

  8. ubuntu中写一个shell脚本的过程

    gedit hello.sh ,然后输入 #!/bin/bash echo "Hello world!" chmod +x hello.sh ./hello.sh

  9. iOS开发-文件管理之多的是你不知道的事(一)

    郝萌主倾心贡献.尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...

  10. 安装ftp碰到的问题及解决方法

    1   CRT显示乱码:     本地windows机器.改动SecureCRT的设置.找到"选项"->"会话选项"->"外观" ...