题目描述

给定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为非负整数,且小于106.

输出格式:

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

输入输出样例

输入样例#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

 

Solution:

  本题也是ZYYS,还以为是高深的计算几何,结果贼简单。

  若一条直线经过三角形内部,则该直线一定经过三角形所在矩形,于是我们可以用给定的三点确定一个矩形。

  因为给定直线一定平行于坐标轴,那么一条直线穿过矩形就两种情况,分别与横纵坐标相关,直接分情况讨论,在处理出矩形后对横纵坐标分别差分就好了,若矩形左下角为$(x_1,y_1)$右上角为$(x_2,y_2)$,因为截距为$\leq 10^6$非负整数,所以可行的直线范围为$[x_1+1,x_2-1]$和$[y_1+1,y_2-1]$,那么差分时就让$sx[x_1+1]+1,sx[x_2]-1,sy[y_1+1]+1,sy[y_2]-1$。最后求一下前缀和,对于每次询问输出当前点的前缀和就好了。(很水,离散都不用,咕咕^_^)

代码:

/*Code by 520 -- 9.3*/
#include<bits/stdc++.h>
#define il inline
#define ll long long
#define RE register
#define For(i,a,b) for(RE int (i)=(a);(i)<=(b);(i)++)
#define Bor(i,a,b) for(RE int (i)=(b);(i)>=(a);(i)--)
using namespace std;
const int N=;
int n,m,ppx,xx[N],yy[N],sx[N],sy[N];
char s[]; int gi(){
int a=;char x=getchar();
while(x<''||x>'')x=getchar();
while(x>=''&&x<='')a=(a<<)+(a<<)+(x^),x=getchar();
return a;
} int main(){
n=gi();
For(i,,n) {
RE int x1=gi(),y1=gi(),x2=gi(),y2=gi(),x3=gi(),y3=gi();
int lx=min(x1,min(x2,x3));
int ly=min(y1,min(y2,y3));
int rx=max(x1,max(x2,x3));
int ry=max(y1,max(y2,y3));
xx[lx+]++,xx[rx]--,yy[ly+]++,yy[ry]--;
}
For(i,,) sx[i]=sx[i-]+xx[i],sy[i]=sy[i-]+yy[i];
m=gi();
while(m--){
scanf("%s",s),ppx=gi();
printf("%d\n",s[]=='x'?sx[ppx]:sy[ppx]);
}
return ;
}

P4623 [COCI2012-2013#6] BUREK的更多相关文章

  1. 洛谷P4623 [COCI2012-2013#6] BUREK [模拟]

    题目传送门 BUREK 格式难调,题面就不放了. 分析: 一道比较有思维难度的模拟题. 首先我们可以想到,对于一个三角形,可以画出一个最小矩形使得这个三角形被完全包围,并且这个矩形的边平行于坐标轴(图 ...

  2. 2013 Asia Changsha Regional Contest---Josephina and RPG(DP)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and ...

  3. SharePoint 2013: A feature with ID has already been installed in this farm

    使用Visual Studio 2013创建一个可视web 部件,当右击项目选择"部署"时报错: "Error occurred in deployment step ' ...

  4. Visual Studio 2013 添加一般应用程序(.ashx)文件到SharePoint项目

    默认,在用vs2013开发SharePoint项目时,vs没有提供一般应用程序(.ashx)的项目模板,本文解决此问题. 以管理员身份启动vs2013,创建一个"SharePoint 201 ...

  5. SharePoint 2013 create workflow by SharePoint Designer 2013

    这篇文章主要基于上一篇http://www.cnblogs.com/qindy/p/6242714.html的基础上,create a sample workflow by SharePoint De ...

  6. Install and Configure SharePoint 2013 Workflow

    这篇文章主要briefly introduce the Install and configure SharePoint 2013 Workflow. Microsoft 推出了新的Workflow ...

  7. SharePoint 2013 configure and publish infopth

    This article will simply descript how to configure and publish a InfoPath step by step. Note: To con ...

  8. TFS 2013 培训视频

    最近给某企业培训了完整的 TFS 2013 系列课程,一共四天. 下面是该课程的内容安排: 项目管理     建立项目     成员的维护     Backlog 定义     任务拆分     迭代 ...

  9. Visual Studio 2013 Ultimate因为CodeLens功能导致Microsoft.Alm.Shared.Remoting.RemoteContainer.dll高CPU占用率的折中解决方案

    1.为什么Microsoft.Alm.Shared.Remoting.RemoteContainer.dll的CPU占用率以及内存使用率会那么高? 在Visual Studio 2013 Ultima ...

随机推荐

  1. day 9 名字管理系统

    1 while True ##### 布尔值:True or False In [8]: a = 19 In [6]: a > 18 Out[6]: True In [7]: a < 18 ...

  2. DSP5509的USB协议开发

    1. 使用的板子 2. 原理图相关,这个1.5K的上拉电阻,全速和高速上拉在D+,低速上拉在D- 3. 中断处理函数没有搞明白是什么意思?这个工程我怎么基本看不懂? interrupt void US ...

  3. django项目的配置文件settings.py详解

    我们创建好了一个Python项目(mysite/)之后,需要在项目中添加模块应用(polls/),在模块应用中添加处理功能逻辑,如添加模块中的视图处理函数(polls.views.index()),这 ...

  4. python全栈开发-面向对象-进阶2

    python_day_19 今日主要内容: 1.抽象类,接口类 2.多态 3.封装 1.抽象类,接口类 python 没有接口这个概念接口类,抽象类: 制定一个规范. 举个栗子:你的项目经理提一个需求 ...

  5. HTML5 + CSS3 实现地球绕太阳公转

    使用的是正面视角,主要是用 HTML5 + CSS3 来实现,JS只是用来画图. test.html: <!DOCTYPE html> <html> <head> ...

  6. java获取IP地址

    最近在一个多系统集成的项目中,由于跳转路径含IP地址,每次IP改了重启项目都得改好多地方,甚是麻烦.刚在网上了解到java获取IP地址,给大家分享下: 首先要导入jar包 request.getRem ...

  7. 数据库mysql的常规操作

    1. 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进 ...

  8. Literature Books

    Lean In (Sheryl Sandberg) Option B (Sheryl Sandberg) Ready Player One

  9. nginx 根据get参数重定向(根据电视访问的mac地址传递的值,来重定向访问别的url地址,这样就可以进行单台的测试环境。。)

    背景是这样的: 公司要做所有客户端的迁移到别的云平台,但又担心会有问题,所以考虑分批次迁移过去,这样就需要迁移部分用户,因为客户端刷但都是统一但rom包,不能轻易发生改动,所以决定用重定向方式将部分客 ...

  10. Python:内建函数zip

    1.语法 zip([iterable,...]) [说明]:iterable——一个或多个迭代器 2.功能 zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个的元组,然后返回由这 ...