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 ...
随机推荐
- pgpool-II的master-slave模式的分析
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL集群方案相关索引页 回到顶级页面:PostgreSQL索引页 现象描述: 客户来邮件,问:为何Pgpool-II ...
- java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例
FileInputStream <span style="font-family:Verdana;">import java.io.File; import java. ...
- K-means算法实现
目录 K-means K-means x = xlsread("D:\MatlabData\西瓜数据集.xlsx"); m = length(x); [Idx,C]=kmeans( ...
- Linux安装JDK8详细步骤
1.下载jdk8 查看Linux位数,到oracle官网下载对应的jdk ① sudo uname --m 确认32位还是64位 ② https://www.oracle.com/technetwo ...
- openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 二
openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...
- JAVA学习笔记--策略设计模式与适配器模式
一.策略设计模式 创建一个能够根据所传递对象的不同而具有不同行为的方法被称为策略设计模式:这类方法包含所要执行的算法中固定不变的部分,而“策略”包含变化的部分.策略就是传递进去的参数对象,它包含要执行 ...
- SPP-net论文总结
SPPNet方法来自<Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition> ,是大神 ...
- 3.openldap生成LDAP用户
1.用migrationtools生成用户 #yum install migrationtools -y #vim /usr/share/migrationtools/migrate_common.p ...
- 第16次Scrum会议(10/28)【欢迎来怼】
一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华小组照片 二.开会信息 时间:2017/10/28 17:20~17:32,总计12min.地点:东北师范 ...
- UI分析之石家庄铁道大学官网
点击进入石家庄铁道大学的官方网站,首先映入眼帘的是“石家庄铁道大学”七个大字,配以蓝色背景和学校的俯瞰图,给人一种严谨又不失清新的感觉. 学校的网站首页界面主要有九个界面,分别是网站首页,学校概况,组 ...