P4623 [COCI2012-2013#6] BUREK
题目描述
给定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.
输出格式:
每一条直线输出一个整数,表示它穿过的三角形的个数。
输入输出样例
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
0
1
1
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
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的更多相关文章
- 洛谷P4623 [COCI2012-2013#6] BUREK [模拟]
题目传送门 BUREK 格式难调,题面就不放了. 分析: 一道比较有思维难度的模拟题. 首先我们可以想到,对于一个三角形,可以画出一个最小矩形使得这个三角形被完全包围,并且这个矩形的边平行于坐标轴(图 ...
- 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 ...
- SharePoint 2013: A feature with ID has already been installed in this farm
使用Visual Studio 2013创建一个可视web 部件,当右击项目选择"部署"时报错: "Error occurred in deployment step ' ...
- Visual Studio 2013 添加一般应用程序(.ashx)文件到SharePoint项目
默认,在用vs2013开发SharePoint项目时,vs没有提供一般应用程序(.ashx)的项目模板,本文解决此问题. 以管理员身份启动vs2013,创建一个"SharePoint 201 ...
- SharePoint 2013 create workflow by SharePoint Designer 2013
这篇文章主要基于上一篇http://www.cnblogs.com/qindy/p/6242714.html的基础上,create a sample workflow by SharePoint De ...
- Install and Configure SharePoint 2013 Workflow
这篇文章主要briefly introduce the Install and configure SharePoint 2013 Workflow. Microsoft 推出了新的Workflow ...
- SharePoint 2013 configure and publish infopth
This article will simply descript how to configure and publish a InfoPath step by step. Note: To con ...
- TFS 2013 培训视频
最近给某企业培训了完整的 TFS 2013 系列课程,一共四天. 下面是该课程的内容安排: 项目管理 建立项目 成员的维护 Backlog 定义 任务拆分 迭代 ...
- Visual Studio 2013 Ultimate因为CodeLens功能导致Microsoft.Alm.Shared.Remoting.RemoteContainer.dll高CPU占用率的折中解决方案
1.为什么Microsoft.Alm.Shared.Remoting.RemoteContainer.dll的CPU占用率以及内存使用率会那么高? 在Visual Studio 2013 Ultima ...
随机推荐
- 16、Java并发编程:Timer和TimerTask
Java并发编程:Timer和TimerTask(转载) 下面内容转载自: http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer ...
- tomcat 设定自定义图片路径
1.问题 平常图片路径都是在项目目录下存放,都是ip地址+端口号+项目名+图片路径,因为项目需要要把图片从tomcat中分离出来,并且设置可以通过自定义地址访问自定义图片路径. 2.解决 在 tomc ...
- 手摸手,和你一起学习 UiPath Studio
学习 RPA 的路上坑比较多,让我们手摸手,一起走…… 以下是一些学习 UiPath 和 RPA 的资源, 拿走不用谢! UiPath Studio 中文文档 机器人流程自动化其实是很好的概念和技术, ...
- CentOS7.2最小化安装后系统优化
系统初始化技术的演变 1.sysvinit技术 (1)Linux系统的第一个进程(pid=1)为init: Linux 操作系统的启动首先从 BIOS 开始,接下来进入 boot loader,由 b ...
- v-for 指令
JS部分: var app = new Vue({ el: "#app", data() { return { list: [1, 2, 3, 4], objList: [ { i ...
- sql脚本创建用户角色权限表
/******************************************/ /* 名称:权限管理 */ /* 编写日期:2010.5.20 */ /* 开发者:dangqinghua * ...
- 移动端rem用法总结
先介绍一下这个近年来突起的黑马 CSS3中新增的属性,从IE9开始兼容,手机端都兼容.参考的是<html>这个标签的font-size.rem中的r就是root根的意思.所以rem要比em ...
- Python Pygame (3) 界面显示
显示模式: 之前使display模块的set_mode()的方法用来指定界面的大小,并返回一个Surface对象. set_mode()的原型如下: display.set_mode(resoluti ...
- 王者荣耀交流协会第6次Scrum立会
Scrum master :刘耀泽 任思佳的导入excel原型博客地址:http://www.cnblogs.com/rensijia/p/7766812.html 王玉玲psp表格记录功能博客地址: ...
- mysql 查询数据库或某张表有多大(字节)
转载:https://www.cnblogs.com/diandiandidi/p/5582309.html 1.要查询表所占的容量,就是把表的数据和索引加起来就可以了 select sum(DATA ...