题目描述

给定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. C语言提高 (4) 第四天 数组与数组作为参数时的数组指针

    1昨日回顾 const int 和 int const是一样的 const char *p;值不变 char * const p; 指针不能变 编译器对参数的退化: 第三种模型: 三级指针 三级指针局 ...

  2. Code VS 1002 搭桥

    题目描述 Description 有一矩形区域的城市中建筑了若干建筑物,如果某两个单元格有一个点相联系,则它们属于同一座建筑物.现在想在这些建筑物之间搭建一些桥梁,其中桥梁只能沿着矩形的方格的边沿搭建 ...

  3. Mybaitis-generator生成数据对象和时间的优化

    1.本章涉及到知识点,Mybaitis-generator生成数据对象和时间,xml的引用*.properties 外部文件(在这之前必须导入了mybaitis的核心架包) A.在pom.xml的案例 ...

  4. 正则表达式和豆瓣Top250的爬取练习

    datawhale任务2-爬取豆瓣top250 正则表达式 豆瓣250页面分析 完整代码 参考资料 正则表达式 正则表达式的功能用于实现字符串的特定模式精确检索或替换操作. 常用匹配模式 常用修饰符 ...

  5. 小学生都能学会的python(一)2018.9.3

    一,小学生第一天 1,认识和了解python python的创始⼈为吉多·范罗苏姆(Guido van Rossum). python是一门解释性语言  弱类型语言 优点:(1).Python的定位是 ...

  6. 深入了解Spring中的容器

    1.创建Bean的3种方式 1.1使用构造器创建bean实例 这是最常见的方式,如果不采用构造注入,bean类需要有默认构造函数.如果采用构造注入,则需要配置xml文件的<constructor ...

  7. Git学习总结(4)——我的Git忽略文件

    *.bak *.txt *.vm .gitignore #svn .svn/ # built application files *.apk *.ap_ # files for the dex VM ...

  8. 前端框架Bootstrap简单介绍

    下载: 解压之后: 把这些文件拷贝到项目中 页面使用时  只需要引入: 然后我们就可以参考官网来设计需要的前端页面了 设计一个按钮:button 只需要标明css样式中使用的类  下面就是现实效果:

  9. Exchange EMC打开出错 解决

    Exchange控制台打开出错如何解决 1.卸载win server功能中的winrm iis 2.重启 3.安装winrm iis 4.查看default web site 有没有绑定80端口,没有 ...

  10. [SharePoint][SharePoint Designer 入门经典]Chapter12 高级工作流

    1.使用Visio2010创建工作流标志 2.使用Visio Graphic服务可视化一个运行的工作流 3.使用InfoPath2010修饰工作流表单 4.导出可重用的工作流