[poj2653]Pick-up sticks
题目大意:给定一系列线段,以及放在平面上的顺序,给出没有被其他覆盖的线段。
解题关键:线段相交的判断。
满足两个条件即可:快速排斥实验、跨立实验。
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<cstdlib>
- #include<cmath>
- #include<iostream>
- using namespace std;
- typedef long long ll;
- const double eps=1e-;
- int sgn(double x){
- if(fabs(x)<eps)return ;
- else if(x<) return -;
- else 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.y-y*b.x;}
- double operator*(const Point &b)const{return x*b.x+y*b.y;}
- };
- struct Line{
- Point s,e;
- Line(){}
- Line(Point _s,Point _e){s=_s;e=_e;}
- };
- //判断线段相交,模板
- bool inter(Line l1,Line l2){
- return
- max(l1.s.x,l1.e.x)>=min(l2.s.x,l2.e.x)&&
- max(l2.s.x,l2.e.x)>=min(l1.s.x,l1.e.x)&&
- max(l1.s.y,l1.e.y)>=min(l2.s.y,l2.e.y)&&
- max(l2.s.y,l2.e.y)>=min(l1.s.y,l1.e.y)&&
- sgn((l2.s-l1.s)^(l1.e-l1.s))*sgn((l2.e-l1.s)^(l1.e-l1.s))<=&&
- sgn((l1.s-l2.s)^(l2.e-l2.s))*sgn((l1.e-l2.s)^(l2.e-l2.s))<=;
- }
- const int MAXN=;
- Line line[MAXN];
- bool flag[MAXN];
- int main(){
- int n;
- double x1,y1,x2,y2;
- while(scanf("%d",&n),n){
- for(int i=;i<=n;i++){
- scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
- line[i]=Line(Point(x1,y1),Point(x2,y2));
- flag[i]=true;
- }
- for(int i=;i<=n;i++){
- for(int j=i+;j<=n;j++)
- if(inter(line[i],line[j])){
- flag[i]=false;
- break;
- }
- }
- printf("Top sticks: ");
- bool first=true;
- for(int i=;i<=n;i++)
- if(flag[i]){//只是为了控制格式
- if(first)first=false;
- else printf(", ");
- printf("%d",i);
- }
- printf(".\n");
- }
- return ;
- }
[poj2653]Pick-up sticks的更多相关文章
- The 2015 China Collegiate Programming Contest D.Pick The Sticks hdu 5543
Pick The Sticks Time Limit: 15000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others ...
- 2015南阳CCPC D - Pick The Sticks dp
D - Pick The Sticks Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description The story happened lon ...
- CDOJ 1218 Pick The Sticks
Pick The Sticks Time Limit: 15000/10000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others ...
- 2015南阳CCPC D - Pick The Sticks 背包DP.
D - Pick The Sticks Description The story happened long long ago. One day, Cao Cao made a special or ...
- POJ2653:Pick-up sticks(线段相交)
题目:http://poj.org/problem?id=2653 题意:题意很简单,就是在地上按顺序撒一对木棒,看最后有多少是被压住的,输出没有被压住的木棒的序号.(有点坑的就是没说清楚木棒怎么算压 ...
- UESTC 1218 Pick The Sticks
Time Limit: 15000/10000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Status ...
- hdu 5543 Pick The Sticks(动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5543 题意:给你一根长为m的长木板和一些小木棒,每一根小木棒有它的长度和价值,这些小木棒要放在长木板上 ...
- DP(01背包) UESTC 1218 Pick The Sticks (15CCPC C)
题目传送门 题意:长度为L的金条,将n根金棍尽可能放上去,要求重心在L上,使得价值最大,最多有两条可以长度折半的放上去. 分析:首先长度可能为奇数,先*2.然后除了两条特殊的金棍就是01背包,所以dp ...
- [HDOJ5543]Pick The Sticks(DP,01背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5543 题意:往长为L的线段上覆盖线段,要求:要么这些线段都在L的线段上,要么有不超过自身长度一半的部分 ...
- uestc oj 1218 Pick The Sticks (01背包变形)
题目链接:http://acm.uestc.edu.cn/#/problem/show/1218 给出n根木棒的长度和价值,最多可以装在一个长 l 的容器中,相邻木棒之间不允许重叠,且两边上的木棒,可 ...
随机推荐
- Dom节点操作常用方法
1.访问/获取节点 document.getElementById(id); //返回对拥有指定id的第一个对象进行访问 document.getElementsByName(name); //返回带 ...
- IIS 高并发的相关配置
前言: 随着业务量的增加,服务器流量的增长增长了好多,高峰期会出现 503 的错误,IIS 对请求数的配置默认是 1000,无法满足现状的需求: 需要收集性能数据如下: 1.Windows性能监视器, ...
- 继续吐槽XE5中的boost::thread问题:找不到CC32130MT.DLL
在XE5中,随便创建一个HelloWorld程序,加入boost::thread的功能,编译链接后,无法运行,无法调试,提示找不到CC32130MT.DLL 这个DLL名字看上去好像是跟多线程有关的, ...
- 去除编译警告@SuppressWarnings注解用法详解(转)
使用:@SuppressWarnings(“”)@SuppressWarnings({})@SuppressWarnings(value={}) 编码时我们总会发现如下变量未被使用的警告提示: 上述代 ...
- ElasticSearch_学习_01_单实例安装与分布式安装
一.前言 二.下载 1.下载地址 https://www.elastic.co/downloads/past-releases 三.单实例安装 直接解压,window下运行 elasticsearch ...
- mysql字段设计坑
对varchar, char类型的字段进行排序 把价格设计成decimal的时候,要注意 "有效位数", "小数位数", 不然会发现,插入的时候最多达到上限
- InnoDB引擎的特点及优化方法
1.什么是InnoDB引擎? InnoDB引擎是MySQL数据库的另一个重要的存储引擎,正成为目前MySQL AB所发行的新版的标准,被包含在所有二进制安装包里,和其他存储引擎相比,Inno ...
- bzoj 4710 分特产
有 $n$ 个人,$m$ 种物品,每种物品有 $a_i$ 个,求每个人至少分到一个的方案数 $n,m,a_i \leq 2000$ sol: 比上一个题简单一点 还是考虑容斥 每个人至少分到一个 = ...
- python 调试命令
部分整理自:http://flysnowxf.iteye.com/blog/1327677 启动调试: python -m pdb xxx.py 常用命令说明: l #查看运行到哪行代码 n #单步运 ...
- 浅谈K-D Tree
初步认识\(K-D\) \(Tree\) \(K-D\) \(Tree\)是一种基于空间分割的二叉树形数据结构,一般用于高维信息检索.因为\(OI\)中很多问题都能转化为高维信息检索,所以\(K-D\ ...