题意:n根木棍随意摆放在一个平面上,问放在最上面的木棍是哪些。

思路:线段相交,因为题目说最多有1000根在最上面。所以从后往前处理,直到木棍没了或者最上面的木棍的总数大于1000.

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<math.h>
  4. #include<iostream>
  5. using namespace std;
  6. const int N=1e5+;
  7. const double eps=1e-;
  8. int sgn(double x){
  9. if(fabs(x)<eps) return ;
  10. if(x>) return ;
  11. return -;
  12. }
  13. struct point{
  14. double x,y;
  15. point(){}
  16. point(double x_,double y_){
  17. x=x_,y=y_;
  18. }
  19. point operator -(const point &b)const{
  20. return point(x-b.x,y-b.y);
  21. }
  22. double operator *(const point &b)const{
  23. return x*b.x+y*b.y;
  24. }
  25. double operator ^(const point &b)const{
  26. return x*b.y-y*b.x;
  27. }
  28. };
  29. struct line{
  30. point s,e;
  31. line(){}
  32. line(point s_,point e_){
  33. s=s_,e=e_;
  34. }
  35. }li[N];
  36. double cal(point p0,point p1,point p2){//叉积
  37. return (p1-p0)^(p2-p0);
  38. }
  39. int xj(line a,line b){//判断两线段是否相交
  40. point A=a.s,B=a.e,C=b.s,D=b.e;
  41. return
  42. max(A.x,B.x)>=min(C.x,D.x) &&
  43. max(C.x,D.x)>=min(A.x,B.x) &&
  44. max(A.y,B.y)>=min(C.y,D.y) &&
  45. max(C.y,D.y)>=min(A.y,B.y) &&
  46. sgn(cal(A,C,D))*sgn(cal(B,C,D))<= &&
  47. sgn(cal(C,A,B))*sgn(cal(D,A,B))<=;
  48. }
  49. int ans[N];
  50. int main(){
  51. int n,i,j,js;
  52. while(~scanf("%d",&n)&&n){
  53. double x1,x2,y1,y2;js=;
  54. for(i=;i<=n;i++){
  55. scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
  56. li[i]=line(point(x1,y1),point(x2,y2));
  57. }
  58. for(i=n;i&&js<;i--){
  59. for(j=i+;j<=n;j++){
  60. if(xj(li[i],li[j]))
  61. break;
  62. }
  63. if(j>n) ans[++js]=i;
  64. }
  65. printf("Top sticks:");
  66. for(i=js;i;i--){
  67. printf(" %d%c",ans[i],i==?'.':',');
  68. }
  69. puts("");
  70. }
  71. return ;
  72. }

POJ 2653 Pick-up sticks【线段相交】的更多相关文章

  1. 【POJ 2653】Pick-up sticks 判断线段相交

    一定要注意位运算的优先级!!!我被这个卡了好久 判断线段相交模板题. 叉积,点积,规范相交,非规范相交的简单模板 用了“链表”优化之后还是$O(n^2)$的暴力,可是为什么能过$10^5$的数据? # ...

  2. POJ 2653 Pick-up sticks(线段相交)

    题意:给定n个木棍依次放下,要求最终判断没被覆盖的木棍是哪些. 思路:快速排斥以及跨立实验可以判断线段相交. #include<algorithm> #include<cstdio& ...

  3. POJ 2653 Pick-up sticks [线段相交 迷之暴力]

    Pick-up sticks Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 12861   Accepted: 4847 D ...

  4. POJ 1066 Treasure Hunt (线段相交)

    题意:给你一个100*100的正方形,再给你n条线(墙),保证线段一定在正方形内且端点在正方形边界(外墙),最后给你一个正方形内的点(保证不再墙上) 告诉你墙之间(包括外墙)围成了一些小房间,在小房间 ...

  5. POJ 1410 Intersection --几何,线段相交

    题意: 给一条线段,和一个矩形,问线段是否与矩形相交或在矩形内. 解法: 判断是否在矩形内,如果不在,判断与四条边是否相交即可.这题让我发现自己的线段相交函数有错误的地方,原来我写的线段相交函数就是单 ...

  6. POJ 1269 Intersecting Lines(线段相交,水题)

    id=1269" rel="nofollow">Intersecting Lines 大意:给你两条直线的坐标,推断两条直线是否共线.平行.相交.若相交.求出交点. ...

  7. POJ 1066 Treasure Hunt【线段相交】

    思路:枚举四边墙的门的中点,与终点连成一条线段,判断与其相交的线段的个数.最小的加一即为答案. 我是傻逼,一个数组越界调了两个小时. #include<stdio.h> #include& ...

  8. poj 1556 (Dijkstra + Geometry 线段相交)

    链接:http://poj.org/problem?id=1556 The Doors Time Limit: 1000MS   Memory Limit: 10000K Total Submissi ...

  9. POJ 3304 Segments[直线与线段相交]

    Segments Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13514   Accepted: 4331 Descrip ...

  10. POJ 1408 Fishnet【枚举+线段相交+叉积求面积】

    题目: http://poj.org/problem?id=1408 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...

随机推荐

  1. [deviceone开发]-do_QRCode的简单示例

    一.简介 do_QRCode组件可以用来生成二维码,识别二维码图片文件,这个示例直观的展示组件基本的使用方式. 二.效果图 三.相关下载 https://github.com/do-project/c ...

  2. Could not load file or assembly 'Microsoft.SqlServer.Management.Sdk.Sfc, Version=11.0.0.0 系统找不到指定的文件。

    环境: web服务器: ip:192.168.1.32 ,安装有 Visual Studio Premium 2013 操作系统: Microsoft  Server 2008 r2+sp1 数据库服 ...

  3. SAP中日期时间函数总结

    1.获得最后一天CALL FUNCTION 'FIMA_DATE_CREATE'  EXPORTING   I_DATE                       = I_DATE "输入 ...

  4. SharePoint 2013 修改表单认证登录页面

    前 言 之前的博客我们介绍了如何为SharePoint配置表单登陆,但是,登陆页面是丑.很丑.非常丑.特别非常丑!我们现在就介绍一下如何定制SharePoint表单登陆页面! SharePoint 表 ...

  5. Sharepoint 文档库根据文件夹层级展示

    类似于资源管理器,效果如下 步骤 打开Sharepoint Desinger,编辑Allitems.aspx页面 在PlaceHolderMain里面插入代码,黄色部分需要替换 <table s ...

  6. Android自定义ScrollView分段加载大文本数据到TextView

    以下内容为原创,转载时请注明链接地址:http://www.cnblogs.com/tiantianbyconan/p/3311658.html 这是我现在碰到的一个问题,如果需要在TextView中 ...

  7. 折腾一天的WordPress

    自从昨天开始要写博客,在网上找了找大家都比较推崇著名的WordPress,所以自己就闲来无事要坐下测试弄一个,不弄不知道,一弄折磨人啊,公司的破网直接想让我崩溃,所以这一天就在这搭建环境中度过,不过值 ...

  8. [Android L]SEAndroid增强Androd安全性背景概要及带来的影响

    1  SEAndroid背景   Android对于操作系统安全性方面的增强一直沿用Linux内核所提供的MAC强制访问控制套件SELinux,对权限进行了更为深度的管理,有效地控制着进程对资源的访问 ...

  9. IOS 四舍五入 进一法 去尾法

    float numberToRound; int result; numberToRound = 4.51; result = (int)roundf(numberToRound); NSLog(@& ...

  10. ArrayList Vector LinkedList 区别与用法

    转载自: http://www.cnblogs.com/mgod/archive/2007/08/05/844011.html 最近用到了,所以依然是转载 ArrayList 和Vector是采用数组 ...