HDU 1086 You can Solve a Geometry Problem too(求线段交点数)
2013-11-07 18:46
495 查看
好长时间没有写博客了,来一道水题练练手。
/************************************ * Author : binwin20 * * Blog : blog.csdn.net/binwin20 * ************************************/ #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <cmath> #include <cstring> #include <iostream> #include <queue> #include <map> #include <stack> #include <string> #include <algorithm> #include <vector> #include <list> #include <deque> #define LL long long #define DB double #define SI(a) scanf("%d",&a) #define SD(a) scanf("%lf",&a) #define SS(a) scanf("%s",a) #define PF printf #define MM(a,b) memset(a,b,sizeof(a)) #define REP(i,a,b) for(int i=a;i<b;i++) #define REPD(i,a,b) for(int i=a;i>b;i--) #define INF 0x3f3f3f3f #define EPS 1e-8 #define bug puts("bug") using namespace std; #define N 109 struct cpoint{ DB x,y; void get(){ SD(x);SD(y); } }; DB x_mult(cpoint a,cpoint b,cpoint p){ return (a.x-p.x)*(b.y-p.y)-(a.y-p.y)*(b.x-p.x); } struct csegment{ cpoint st,en; csegment(){} csegment(cpoint a,cpoint b){ st = a;en = b; } }; bool online(cpoint p1,cpoint p2,cpoint p3,cpoint p4){ if(max(p1.x,p2.x)<min(p3.x,p4.x)||max(p1.y,p2.y)<min(p3.y,p4.y)|| max(p3.x,p4.x)<min(p1.x,p2.x)||max(p3.y,p4.y)<min(p1.y,p2.y)) return false; return true; } bool across_seg(csegment a,csegment b){ if(online(a.st,a.en,b.st,b.en)&& x_mult(b.st,a.en,a.st)*x_mult(a.en,b.en,a.st)>-EPS&& x_mult(a.st,b.en,b.st)*x_mult(b.en,a.en,b.st)>-EPS) return true; return false; } csegment re ; int n; int main() { #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif while(~SI(n)&&n){ REP(i,0,n){ re[i].st.get(); re[i].en.get(); } int ans = 0; REP(i,0,n) REP(j,i+1,n){ if(across_seg(re[i],re[j])) ans++; } PF("%d\n",ans); } return 0; }
相关文章推荐
- Fork + Pull模式
- 释放MySQL ibdata1文件的空间
- 理解v8的Isolate调度
- 极路由:互联网思维颠覆传统路由
- 蹩脚网管(一)
- ip igmp join-group 马赛克的问题
- Android基础学习__第5天__Activity生命周期
- hdu_1060_Leftmost Digit_201311071827-2
- 数码管的显示
- C#类的访问修饰符区别介绍
- hust 1606,乱搞
- Linux remote access using X11
- why inline functions must be put in header files?
- hust 1602, 乱搞
- zabbix自定义监控脚本配置
- GCJ 2008 Round 1A A - Minimum Scalar Product (贪心)
- SVM程序应用
- 极路由能否成为下一个小米?
- sheepdog(牧羊犬):一种EBS的开源实现
- UVA 12661 Funny Car Racing(最短路)