zoj 2381
来源:互联网 发布:中国网络电视直播 编辑:程序博客网 时间:2024/05/16 13:58
# include <stdio.h># include <string.h>int n,m,x1,x2,y1,y2;struct node{ int x,y;};struct li{ node a,b; int sum;}line[2509];int cross(node a,node b,node c){ return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);}void solve(node c){ for(int i=0;i<=n;i++) { if(cross(line[i].a,line[i].b,c)>0&&cross(line[i+1].a,line[i+1].b,c)<0) {line[i].sum++;break;} } return ;}int main (){ int a,b,mark=1; while(scanf("%d",&n)!=EOF) { if(n==0) break; if(mark==0) printf("\n"); memset(line,0,sizeof(line)); scanf("%d%d%d%d%d",&m,&x1,&y1,&x2,&y2); line[0].a.x=x1; line[0].a.y=y1; line[0].b.x=x1; line[0].b.y=y2; line[n+1].a.x=x2; line[n+1].a.y=y1; line[n+1].b.x=x2; line[n+1].b.y=y2; for(int i=1;i<=n;i++) { scanf("%d%d",&a,&b); line[i].a.x=a; line[i].a.y=y1; line[i].b.x=b; line[i].b.y=y2; } node c; for(int i=0;i<m;i++) { scanf("%d%d",&c.x,&c.y); solve(c); } for(int i=0;i<=n;i++) { printf("%d: %d\n",i,line[i].sum); } mark=0; } return 0;}需要判断玩具在间隔的左侧还是右侧 。。。。 用cross解决
0 0
- zoj 2381
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- Oracle中Hint深入理解
- delphi 汉字转拼音首字母
- struts2 关于 No result defined for action and result success 的问题
- Android应用上传至各应用平台(2)
- 搭建win32 cocos3.0 正式版本 创建项目 最新 2014.4.28
- zoj 2381
- SPRING.NET 1.3.2 学习2--快速入门应用示例说明
- 元编程的胡思乱想
- eclipse tomcat maven热部署
- 数组名作为函数参数
- [android lib]Github上基于Android平台的优秀的开源项目
- printf中%s中间可以加空格 -2013-09-20 12:32
- ubuntu su
- iOS 捕获Crash 发送Bug邮件