poj 2318 TOYS & poj 2398 Toy Storage (叉积)
来源:互联网 发布:淘宝上怎么买ig包 编辑:程序博客网 时间:2024/06/10 23:58
链接:poj 2318
题意:有一个矩形盒子,盒子里有一些木块线段,并且这些线段坐标是按照顺序给出的,
有n条线段,把盒子分层了n+1个区域,然后有m个玩具,这m个玩具的坐标是已知的,问最后每个区域有多少个玩具
分析:从左往右,直到判断玩具是否在线段的逆时针方向为止,这个就需要用到叉积,当然可以用二分查找优化。
叉积:已知向量a(x1,y1),向量b(x2,y2),axb=x1*y2-x2*y1,
若axb>0,a在b的逆时针方向,若axb<0,则a在b的顺时针方向
注:每组数据后要多空一行
#include<stdio.h>#include<string.h>int chaji(int x1,int y1,int x2,int y2){ return x1*y2-x2*y1; }int main(){ int u[5010],l[5010],x,y,x1,y1,x2,y2,m,n,i,j,s[5010]; while(scanf("%d",&n)!=EOF){ if(n==0) break; scanf("%d%d%d%d%d",&m,&x1,&y1,&x2,&y2); for(i=0;i<n;i++) scanf("%d%d",&u[i],&l[i]); u[n]=l[n]=x2; //将最后一个线段加上 memset(s,0,sizeof(s)); for(i=0;i<m;i++){ scanf("%d%d",&x,&y); for(j=0;j<=n;j++) if(chaji(u[j]-l[j],y1-y2,x-l[j],y-y2)>0){ //叉积判断 s[j]++; break; } } for(j=0;j<=n;j++) printf("%d: %d\n",j,s[j]); printf("\n"); } return 0;}
链接:poj 2398
意思与上题一样,只不过给出的线段乱序的,所以需要排序,
输出也有点不同,需要输出有玩具1-m个的区间有多少个,按顺序输出
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct point{ int l,u;}p[1010];int chaji(int x1,int y1,int x2,int y2){ return x1*y2-x2*y1;}int cmp(struct point a,struct point b){ if(a.l!=b.l) return a.l<b.l; return a.u<b.u;}int main(){ int x,y,x1,y1,x2,y2,m,n,i,j,s[1010],a[1010]; while(scanf("%d",&n)!=EOF){ if(n==0) break; scanf("%d%d%d%d%d",&m,&x1,&y1,&x2,&y2); for(i=0;i<n;i++) scanf("%d%d",&p[i].u,&p[i].l); p[n].u=p[n].l=x2; sort(p,p+n+1,cmp); //对线段排序 memset(s,0,sizeof(s)); memset(a,0,sizeof(a)); for(i=0;i<m;i++){ scanf("%d%d",&x,&y); for(j=0;j<=n;j++) if(chaji(p[j].u-p[j].l,y1-y2,x-p[j].l,y-y2)>0){ s[j]++; break; } } for(j=0;j<=n;j++) a[s[j]]++; printf("Box\n"); for(i=1;i<=n;i++) if(a[i]) printf("%d: %d\n",i,a[i]); } return 0;}
1 0
- POJ 2318 TOYS && POJ 2398 Toy Storage
- POJ 2318 TOYS || POJ 2398 Toy Storage
- poj 2318 TOYS & poj 2398 Toy Storage (叉积)
- 【叉积性质】POJ 2318 TOYS && POJ 2398 Toy Storage
- POJ 2318:TOYS & POJ 2398:Toy Storage 计算几何
- POJ 2318 TOYS + POJ 2398 Toy Storage (点与直线的位置关系)
- POJ 2318 TOYS && POJ 2398 Toy Storage [判断点在四边形中]
- poj 2398 Toys storage
- POJ 2318 TOYS + 2398 Toy Storage(计算几何叉积)
- poj 2398 Toy Storage
- poj 2398 Toy Storage
- POJ 2398 Toy Storage
- POJ 2398 Toy Storage
- poj 2398 toy storage
- poj 2398 Toy Storage
- POJ 2398 Toy Storage
- poj 2398Toy Storage
- POJ 2398 Toy Storage
- B. Sort the Array
- iOS 工作笔记(一)
- C++第十六天 类
- 程序猿个人发展(公司群分享)
- 山东理工OJ【2054】双向链表(两种方法)
- poj 2318 TOYS & poj 2398 Toy Storage (叉积)
- 反渗透设备:电镀厂中水回用反渗透设备概述
- Ubuntu下Git配置学习笔记
- 华硕X550C系列安装ubuntu后wifi显示被硬件禁用的解决方法
- 在linux系统下安装虚拟机
- 管式超滤系统:超滤系统清洗方法与开机前低压冲洗
- Struts2 s:property标签的escapeHtml属性
- Android学习路线(一)开发环境搭建
- NSArray中存的是实体时的排序