博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 10902
阅读量:5965 次
发布时间:2019-06-19

本文共 1507 字,大约阅读时间需要 5 分钟。

#include 
#include
#include
#include
#include
using namespace std;#define MAXN 100002struct point { double x,y; point (double x = 0 ,double y = 0){ this->x = x; this->y = y; }};struct line{ point st,en; line(point st,point en){ this->st = st; this->en = en; }};class Isolated{ private: int segNum; vector
segments; int ans[MAXN]; int ansNum; public: void init(); void readData(int num); void process(); bool isCross(line la,line lb); bool isInSeg(point a,point la,point lb);//点是否在线段l上 long long dir(point i,point j,point k);//向量叉积};void Isolated::init(){ ansNum = 0; segments.clear();}void Isolated::readData(int num){ segNum = num; double x1,y1,x2,y2; while(num--){ scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2); point st(x1,y1),en(x2,y2); line la(st,en); segments.push_back(la); }}void Isolated::process(){ bool isColl;//线段是否是孤立的 for(int i = 0;i < segNum;i++){ isColl = true; for(int j = segNum - 1;j >= 0;j--){ if(i==j)continue; else{ if(isCross(segments[i],segments[j])){ if(i < j){ //如果和之后落下的相交,那么就被排除 isColl = false; }break; } } } if(isColl) { ans[ansNum++] = i + 1; } } cout<<"Top sticks: "; for(int k = 0; k < ansNum;k++){ if(k < ansNum - 1) cout<
<<", "; else cout<
<<"."<
>cases,cases != 0){ isolated.init(); isolated.readData(cases); isolated.process(); } return 0;}

 

转载于:https://www.cnblogs.com/ohxiaobai/p/4526132.html

你可能感兴趣的文章
异步方法(九)
查看>>
第一个SSCLI范例:echo的调试问题
查看>>
从前台获取的数据出现乱码的解决方法
查看>>
SSH基础
查看>>
PhpStorm下Laravel代码智能提示
查看>>
Python模块(二)(序列化)
查看>>
取值范围
查看>>
bool?
查看>>
warning:1071 (42000) Specified key was too long;max key length is 1000 bytes
查看>>
大数据之R语言速成与实战
查看>>
隐马尔科夫模型及Viterbi算法的应用
查看>>
HADOOP综合应用架构之一 配置Secondarynamenode在另一台机器运行
查看>>
Modelsim-altera 仿真 顶层原理图的解决办法
查看>>
php的ob_flush和flush(转)
查看>>
PHPExcel读取excel文件
查看>>
Disallowed Key Characters(转)
查看>>
http缓存协议详解
查看>>
分享一个dapper简单封装
查看>>
C#—Dev XtraTabControl操作总结如动态增加Tab和关闭选项卡方法等
查看>>
OC继承以及实例变量修饰符
查看>>