判断线段与直线的相交  这里有个地方需要注意的就是在 转换的时候容易报错 在叉积完后的判断符号的时候需要注意 这个地方会超出int 的范围

2014-06-0320:14:04

#include <iostream>
#include <cstdio>
#include <string.h>
#include <cmath>
using namespace std;
struct point{
int x,y;
point(int a = , int b = ){
x =a ; y = b;
}
}R[];
point operator - (const point a ,const point b){
return point ( a.x - b.x , a.y - b.y );
}
struct line{
point a,b;
}T[ ];
int n;
int cross( point a, point b){
return a.x*b.y - b.x* a.y;
} bool eq(point a,point b){
if(a.x == b.x&&a.y == b.y) return true;
else return false;
}
int maxv(int a, int b){
return a>b?a:b;
}
int jj(int a){
if(a>) return ;
if(a<) return -;
else return ;
}
int main()
{
int t ;
scanf("%d",&t);
while(t --){
scanf("%d",&n);
int num = ;
for( int i = ; i < n ; i++){
int x1,x2,y1,y2;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
T[i].a=point(x1,y1);
T[i].b= point(x2,y2);
R[num++] = T[i].a;
R[num++] =T[i].b;
}
int ans =;
for( int i = ; i <num ; ++i){
for(int j = i+ ; j < num ; j++ ){
if(eq(R[i],R[j])) continue;
int ge = ;
line an;
an.a = R[i];
an.b = R[j]-an.a;
for(int k = ; k < n ; k ++){ int t1 =jj(cross( an.b , T[k].a - an.a ));
int t2 =jj(cross( an.b , T[k].b - an.a )); if(t1 * t2 <= ) ge++;
}
ans =maxv(ans,ge);
} } printf("%d\n",ans);
} return ;
}

ac1097的更多相关文章

随机推荐

  1. FtpWebRequest UploadFile返回"The underlying connection was closed: The server committed a protocol violation."解决方法

    将FtpWebRequest的KeepAlive设置为true. return Return<Boolean>( new Uri(ftpPath + fileName), request ...

  2. iOS自带分享

    NSArray *activityItems; if (self.sharingImage != nil) { activityItems = @[self.sharingText, self.sha ...

  3. humid vs wet vs moist

    想表达天气很潮湿该用哪个词呢? 跟一个美国人聊天,我说wet他没听清,然后我说moist,然后他反应过来了:"oh,humid" 那~还是用humid吧

  4. 使用Wireshark分析QQ聊天

  5. 2018年全国多校算法寒假训练营练习比赛(第一场)闯关的lulu

    闯关的lulu 链接:https://www.nowcoder.com/acm/contest/67/J 来源:牛客网 题目描述 勇者lulu某天进入了一个高度10,000,000层的闯关塔,在塔里每 ...

  6. java基础解析系列(一)---String、StringBuffer、StringBuilder

    java基础解析系列(一)---String.StringBuffer.StringBuilder 前言:本系列的主题是平时容易疏忽的知识点,只有基础扎实,在编码的时候才能更注重规范和性能,在出现bu ...

  7. Python:列表生成式

    List Comprehensions #列表生成式:Python内置的非常简单却强大的可以用来创建list的生成式. #生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可 ...

  8. zabbix修改Template OS Linux模版使已使用内存(Used memory)更准确

    说明: [root@coolnull ~]# free -m total used free shared buffers cached Mem: 995 785 209 0 6 92 -/+ buf ...

  9. Python开发【笔记】:关于子线程(子进程)与主线程(主进程)的关联

    前言: 主要分析下面的问题: 主线程启线程  主线程执行完毕,会关闭子线程吗? 子线程启线程  主线程执行完毕,会结束吗? 主进程启动进程,主进程执行完毕,会怎样? 子进程启动进程,进程执行完毕,又会 ...

  10. 图片放大_css3

    .flash_little_img{position:relative;}.flash_little_img{width:500px;height:333px;border:none; margin: ...