POJ 2653 Pick-up sticks【线段相交】
题意:n根木棍随意摆放在一个平面上,问放在最上面的木棍是哪些。
思路:线段相交,因为题目说最多有1000根在最上面。所以从后往前处理,直到木棍没了或者最上面的木棍的总数大于1000.
- #include<stdio.h>
- #include<string.h>
- #include<math.h>
- #include<iostream>
- using namespace std;
- const int N=1e5+;
- const double eps=1e-;
- int sgn(double x){
- if(fabs(x)<eps) return ;
- if(x>) return ;
- return -;
- }
- struct point{
- double x,y;
- point(){}
- point(double x_,double y_){
- x=x_,y=y_;
- }
- point operator -(const point &b)const{
- return point(x-b.x,y-b.y);
- }
- double operator *(const point &b)const{
- return x*b.x+y*b.y;
- }
- double operator ^(const point &b)const{
- return x*b.y-y*b.x;
- }
- };
- struct line{
- point s,e;
- line(){}
- line(point s_,point e_){
- s=s_,e=e_;
- }
- }li[N];
- double cal(point p0,point p1,point p2){//叉积
- return (p1-p0)^(p2-p0);
- }
- int xj(line a,line b){//判断两线段是否相交
- point A=a.s,B=a.e,C=b.s,D=b.e;
- return
- max(A.x,B.x)>=min(C.x,D.x) &&
- max(C.x,D.x)>=min(A.x,B.x) &&
- max(A.y,B.y)>=min(C.y,D.y) &&
- max(C.y,D.y)>=min(A.y,B.y) &&
- sgn(cal(A,C,D))*sgn(cal(B,C,D))<= &&
- sgn(cal(C,A,B))*sgn(cal(D,A,B))<=;
- }
- int ans[N];
- int main(){
- int n,i,j,js;
- while(~scanf("%d",&n)&&n){
- double x1,x2,y1,y2;js=;
- for(i=;i<=n;i++){
- scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
- li[i]=line(point(x1,y1),point(x2,y2));
- }
- for(i=n;i&&js<;i--){
- for(j=i+;j<=n;j++){
- if(xj(li[i],li[j]))
- break;
- }
- if(j>n) ans[++js]=i;
- }
- printf("Top sticks:");
- for(i=js;i;i--){
- printf(" %d%c",ans[i],i==?'.':',');
- }
- puts("");
- }
- return ;
- }
POJ 2653 Pick-up sticks【线段相交】的更多相关文章
- 【POJ 2653】Pick-up sticks 判断线段相交
一定要注意位运算的优先级!!!我被这个卡了好久 判断线段相交模板题. 叉积,点积,规范相交,非规范相交的简单模板 用了“链表”优化之后还是$O(n^2)$的暴力,可是为什么能过$10^5$的数据? # ...
- POJ 2653 Pick-up sticks(线段相交)
题意:给定n个木棍依次放下,要求最终判断没被覆盖的木棍是哪些. 思路:快速排斥以及跨立实验可以判断线段相交. #include<algorithm> #include<cstdio& ...
- POJ 2653 Pick-up sticks [线段相交 迷之暴力]
Pick-up sticks Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 12861 Accepted: 4847 D ...
- POJ 1066 Treasure Hunt (线段相交)
题意:给你一个100*100的正方形,再给你n条线(墙),保证线段一定在正方形内且端点在正方形边界(外墙),最后给你一个正方形内的点(保证不再墙上) 告诉你墙之间(包括外墙)围成了一些小房间,在小房间 ...
- POJ 1410 Intersection --几何,线段相交
题意: 给一条线段,和一个矩形,问线段是否与矩形相交或在矩形内. 解法: 判断是否在矩形内,如果不在,判断与四条边是否相交即可.这题让我发现自己的线段相交函数有错误的地方,原来我写的线段相交函数就是单 ...
- POJ 1269 Intersecting Lines(线段相交,水题)
id=1269" rel="nofollow">Intersecting Lines 大意:给你两条直线的坐标,推断两条直线是否共线.平行.相交.若相交.求出交点. ...
- POJ 1066 Treasure Hunt【线段相交】
思路:枚举四边墙的门的中点,与终点连成一条线段,判断与其相交的线段的个数.最小的加一即为答案. 我是傻逼,一个数组越界调了两个小时. #include<stdio.h> #include& ...
- poj 1556 (Dijkstra + Geometry 线段相交)
链接:http://poj.org/problem?id=1556 The Doors Time Limit: 1000MS Memory Limit: 10000K Total Submissi ...
- POJ 3304 Segments[直线与线段相交]
Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13514 Accepted: 4331 Descrip ...
- POJ 1408 Fishnet【枚举+线段相交+叉积求面积】
题目: http://poj.org/problem?id=1408 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...
随机推荐
- [deviceone开发]-do_QRCode的简单示例
一.简介 do_QRCode组件可以用来生成二维码,识别二维码图片文件,这个示例直观的展示组件基本的使用方式. 二.效果图 三.相关下载 https://github.com/do-project/c ...
- 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 数据库服 ...
- SAP中日期时间函数总结
1.获得最后一天CALL FUNCTION 'FIMA_DATE_CREATE' EXPORTING I_DATE = I_DATE "输入 ...
- SharePoint 2013 修改表单认证登录页面
前 言 之前的博客我们介绍了如何为SharePoint配置表单登陆,但是,登陆页面是丑.很丑.非常丑.特别非常丑!我们现在就介绍一下如何定制SharePoint表单登陆页面! SharePoint 表 ...
- Sharepoint 文档库根据文件夹层级展示
类似于资源管理器,效果如下 步骤 打开Sharepoint Desinger,编辑Allitems.aspx页面 在PlaceHolderMain里面插入代码,黄色部分需要替换 <table s ...
- Android自定义ScrollView分段加载大文本数据到TextView
以下内容为原创,转载时请注明链接地址:http://www.cnblogs.com/tiantianbyconan/p/3311658.html 这是我现在碰到的一个问题,如果需要在TextView中 ...
- 折腾一天的WordPress
自从昨天开始要写博客,在网上找了找大家都比较推崇著名的WordPress,所以自己就闲来无事要坐下测试弄一个,不弄不知道,一弄折磨人啊,公司的破网直接想让我崩溃,所以这一天就在这搭建环境中度过,不过值 ...
- [Android L]SEAndroid增强Androd安全性背景概要及带来的影响
1 SEAndroid背景 Android对于操作系统安全性方面的增强一直沿用Linux内核所提供的MAC强制访问控制套件SELinux,对权限进行了更为深度的管理,有效地控制着进程对资源的访问 ...
- IOS 四舍五入 进一法 去尾法
float numberToRound; int result; numberToRound = 4.51; result = (int)roundf(numberToRound); NSLog(@& ...
- ArrayList Vector LinkedList 区别与用法
转载自: http://www.cnblogs.com/mgod/archive/2007/08/05/844011.html 最近用到了,所以依然是转载 ArrayList 和Vector是采用数组 ...