7-6 UPC--BUREK
BUREK
贝克金宝有N个三角形。他的儿子乔伊有一个很大的刀,准备切割这些三角形。每一次切割,乔伊能够用与x轴平行的直线(y=c)或与y轴平行的直线(x=c)对这些三角形进行切割。
你的任务是计算每一次切割,有多少个三角形会被切割。
注意:
被切割过的三角形仍看作一个三角形;
三角形被切割当且仅当三角形在直线以左的部分的面积和在直线以右的部分的面积,都应大于0。
输入 第一行是一个正整数N(2<=N<=100000),三角形的个数。
第2到N+1行每行包含6个整数x1,y1,x2,y2,x3,y3表示三角形的三个顶点(x1,y1),(x2,y2),(x3,y3)(保证这三个点不共线)0<=x1,y1,x2,y2,x3,y3<=1000000
第N+2行是一个正整数M(2<=M<=100000),切割的次数。
第N+3到N+M+2行包含一个直线方程“x=c”或“y=c”(注意等号两旁的空格)0<=c<=1000000。
输出
每一次切割,输出一行包含切割的三角形数量。
至少40%的数据M<=300
另外40%的数据三角形顶点的坐标小于1000
给个100%不行吗,wa了10遍,全在数据范围上
因为每一次都是对一条平行于X轴或者Y轴的直线进行切割,如果这条线穿过了该三角形的其中一条边(不考虑顶点,因为两部分面积均要大于)就可以讲该三角形切割成两部分。
1 当沿着平行于Y轴的直线进行切割时(x==k)时如果可以切开这个三角形,就说明(min(三角形的x坐标)<k<max(三角形的x坐标))所以可以对三角形的X坐标进行差分,然后求前缀和,求出每一个x=k被切割时,经过这个线的三角形的个数,然后直接O(1)查询即可
2当沿着平行于X轴的直线进行切割时同理,处理Y坐标。
#include<bits/stdc++.h>
using namespace ;
const ll maxn=1e6+7;
const ll inf = 0x3f3f3f3f;
inline ll read()
{ll x=0;bool f=0;char ch=getchar();while (ch<'0'||'9'<ch)f|=ch=='-', ch=getchar();while ('0'<=ch && ch<='9')x=x*10+ch-'0',ch=getchar();return f?-x:x;
}
ll a[maxn],b[maxn];//x.y;
ll sumx[maxn],sumy[maxn];
char s[1000000];
int main()
{ll n;cin>>n;ll cnt1,cnt2;ll x1,y1,x2,y2,x3,y3;ll maxsx=-inf,maxsy=-inf;for(ll i=1;i<=n;i++){x1=read(),y1=read();x2=read(),y2=read();x3=read(),y3=read();cnt1=max(x1,max(x2,x3));cnt2=min(x1,min(x2,x3));maxsx=max(maxsx,cnt1);a[cnt1]--; a[cnt2+1]++;cnt1=max(y1,max(y2,y3));cnt2=min(y1,min(y2,y3));b[cnt1]--; b[cnt2+1]++;maxsy=max(maxsy,cnt1);}sumx[0]=a[0];sumy[0]=b[0];for(ll i=1;i<=max(maxsx,maxsy);i++)//求出来最大的x,y在进行求前缀和 {sumx[i]=sumx[i-1]+a[i];sumy[i]=sumy[i-1]+b[i];} ll t;cin>>t;char ttt;//getchar();while(ttt!='\n') ttt=getchar();while(t--){gets(s);ll len=strlen(s);int sum=0;for(ll i=4;s[i]>='0'&&s[i]<='9'&&i<len;i++){sum=sum*10+(s[i]-'0');}if(s[0]=='x'){printf("%lld\n",sumx[sum]);}else printf("%lld\n",sumy[sum]);}}
7-6 UPC--BUREK相关推荐
- UPC个人训练赛第十五场(AtCoder Grand Contest 031)
传送门: [1]:AtCoder [2]:UPC比赛场 [3]:UPC补题场 参考资料 [1]:https://www.cnblogs.com/QLU-ACM/p/11191644.html B.Re ...
- Script with Login UPC Requests vs Urllib2
部分转载自:github 知乎爬虫 ZhihuSpider 6 网络爬虫-验证码登陆 Python入门网络爬虫之精华版 介绍 在访问某些网站时,我们最初只是需要提供用户名密码就可以登陆的,比如说豆瓣网 ...
- UPC第41场,第42场部分题解
UPC第41场,第42场部分题解 第41场 A: LR Constraints We have N cards arranged in a row from left to right. We wil ...
- Contest3303 - 2022跟随唐克练编程之《顺序结构》(upc)c++
Contest3303 - 2022跟随唐克练编程之<顺序结构>(upc)c++ 文章目录 Contest3303 - 2022跟随唐克练编程之<顺序结构>(upc)c++ 问 ...
- UPC豁免流程精讲!你与大卖的距离,就在这里!
UPC豁免流程精讲!你与大卖的距离,就在这里! 现在不用品牌备案也可以申请UPC豁免啦! 话不多说,直接上申请GTIN豁免的对应入口链接:https://sellercentral.amazon.co ...
- html制作upc 12,如何在条码打印软件中制作UPC码
在形形色色的商品上有一些黑白条组成的条码,这些条码外形也各有不同,当然也就可以根据其特性和码制要求运用在各行各业中,如超市,日化,医药,物流,印刷包装,五金等.这也就决定了各类条码的利用率及其推广程度 ...
- SKU,UPC,ASIN,EAN,GCID到底是什么鬼
1.UPC 全称Universal Product Code 由12位数字代码组成,每一条UPC码都不一样,UPC码里面的数字信息代表了产品的类别,制造商,属性,特性等.其特性是一种长度固定.连续性的 ...
- 认识条码(一):UPC和EAN
您是否想知道在特定使用情况下应使用哪种类型的条形码?您是否对许多类似的条形码类型感到困惑?为了帮助您区分不同的条形码类型,我们发布了有关一维码和二维码的综合指南.在本文中,我们将深入探讨UPC与EAN ...
- 选择哪种连接器:PC vs UPC vs APC?
PC,UPC和APC是光纤连接器内部套圈的三种研磨方式(如下图所示).光纤连接器的套圈是光纤裸露端的外壳,是用来与另一根光纤的发射端或接收端相连.当连接器安装在光纤末端时,光会反射回到光纤上,朝向光源 ...
- 亚马逊UPC报错根本原因是什么?
虽说很多卖家进行了品牌备案,但还是出现各种意想不到的报错问题,按理说品牌备案后,上传Listing更容易,可是为啥还出现UPC报错呢? 关于上传Listing提示UPC报错问题早有出现,前段时间有个卖 ...
最新文章
- 深度学习--TensorFlow(项目)Keras手写数字识别
- 【转】子网划分实例与讲解
- Linux内核驱动之延时---内核超时处理【转】
- 原生js.ajax内存溢出,javascript - 代码点火器-如何使用jQuery向数据库提交ajax javascript对象 - 堆栈内存溢出...
- discuz仿文明争霸游戏官网模版
- Google Webmaster Tools 结构化数据标记使用入门指南
- 动态游标(例如表名作为参数)以及动态SQL分析
- ★★★【庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术系列—(1)读者序】★★★...
- 网上购物系统(Task100)——业务逻辑层BLL(面向接口的编程模式)
- 下岗工人到达退休年龄,养老保险未缴纳满15年,补缴合适吗?
- Vue生命周期-手动挂载理解
- 异步流程控制 java_Javascript异步流程控制之串行执行详解
- 风控建模十一:利用外部数据联合建模时,如何选择样本
- kd树 python实现_Python语言描述KNN算法与Kd树
- echarts实现组织结构图
- php中根据数字月份返回月份的英文缩写
- 1、植物大战僵尸:修改配置
- 项目组织战略管理及组织结构
- 视频中的视频怎样制作,教你轻松实现画中画效果
- VUE实现华视身份证阅读器读取身份证信息
热门文章
- js判断html密码,JS判断密码强度 - KG-鲜血、汗水和眼泪 - OSCHINA - 中文开源技术交流社区...
- 火影推荐程序连载52-什么是Serilog?
- 扎克伯格和他背后的“战士”们
- hub设备_颜值体验都出色,ORICO工业级多口分控HUB体验
- SQL Server 数据挖掘在企业中的应用
- mysql的存储引擎有哪些 区别是什么_MySQL 存储引擎有哪些?区别是什么?
- 免费查题公众号制作超详细(无广告)
- 磁盘无法扩展卷怎么办
- 九 iOS 之CAAnimationGroup(动画组)
- WebForm配置链接数据库