cf14C Four Segments(计算几何)
题意:
给四个线段(两个端点的坐标)。
判断这四个线段能否构成一个矩形。(矩形的四条边都平行于X轴或Y轴)
思路:
计算几何
代码:
class Point{
public:
int x,y;
void readd(int xx,int yy){
x=xx;
y=yy;
}
};
class Segment{
public:
Point startt,endd;
int length;
int Type; //1:横 2:竖 -1:斜
void readd(int x1,int y1,int x2,int y2){
startt.readd(x1,y1);
endd.readd(x2,y2);
length=(int)sqrt((double)(x2-x1)*(x2-x1)+(double)(y2-y1)*(y2-y1));
}
int typeCheck(){
Type=-1;
if(startt.x==endd.x){
Type=2;
}
if(startt.y==endd.y){
Type=1;
}
}
};
Segment S[5];
bool samePoint(Point a,Point b){
if(a.x==b.x&&a.y==b.y){
return true;
}
return false;
}
bool solve(){
if(S[1].startt.y<S[2].startt.y){
swap(S[1],S[2]);
}
if(S[1].startt.x>S[1].endd.x){
swap(S[1].startt,S[1].endd);
}
if(S[2].startt.x>S[2].endd.x){
swap(S[2].startt,S[2].endd);
}
if(S[3].startt.x>S[4].startt.x){
swap(S[3],S[4]);
}
if(S[3].startt.y<S[3].endd.y){
swap(S[3].startt,S[3].endd);
}
if(S[4].startt.y<S[4].endd.y){
swap(S[4].startt,S[4].endd);
}
if(samePoint(S[1].startt,S[3].startt)&&
samePoint(S[1].endd,S[4].startt)&&
samePoint(S[3].endd,S[2].startt)&&
samePoint(S[2].endd,S[4].endd)
){
return true;
}
return false;
}
bool cmp1(Segment a,Segment b){
return a.Type<b.Type;
}
int main(){
rep(i,1,4){
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
S[i].readd(x1,y1,x2,y2);
S[i].typeCheck();
}
rep(i,1,4){
if(S[i].length==0 || S[i].Type==-1){
puts("NO");
return 0;
}
}
sort(S+1,S+5,cmp1);
if(!(S[1].length==S[2].length&&S[3].length==S[4].length)){
puts("NO");
return 0;
}
if(solve()){
puts("YES");
}
else{
puts("NO");
}
return 0;
}
cf14C Four Segments(计算几何)的更多相关文章
- HDU 6697 Closest Pair of Segments (计算几何 暴力)
2019 杭电多校 10 1007 题目链接:HDU 6697 比赛链接:2019 Multi-University Training Contest 10 Problem Description T ...
- POJ 3304 Segments(计算几何)
意甲冠军:给出的一些段的.问:能否找到一条直线,通过所有的行 思维:假设一条直线的存在,所以必须有该过两点的线,然后列举两点,然后推断是否存在与所有的行的交点可以是 代码: #include < ...
- poj3304 Segments【计算几何】
C - Segments POJ - 3304 最近开始刷计算几何了 公式好多完全不会 数学不行 几何不行 记忆力不行 当机 查的题解 就当复习吧 这套专题拿来熟悉一下计算几何模板 #include ...
- 2018.07.04 POJ 3304 Segments(简单计算几何)
Segments Time Limit: 1000MS Memory Limit: 65536K Description Given n segments in the two dimensional ...
- POJ 3304 Segments(计算几何:直线与线段相交)
POJ 3304 Segments 大意:给你一些线段,找出一条直线可以穿过全部的线段,相交包含端点. 思路:遍历全部的端点,取两个点形成直线,推断直线是否与全部线段相交,假设存在这种直线,输出Yes ...
- [转] POJ计算几何
转自:http://blog.csdn.net/tyger/article/details/4480029 计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板 ...
- USACO6.5-Closed Fences:计算几何
Closed Fences A closed fence in the plane is a set of non-crossing, connected line segments with N c ...
- ACM计算几何题目推荐
//第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...
- hdu 1086:You can Solve a Geometry Problem too(计算几何,判断两线段相交,水题)
You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
随机推荐
- 字符串出现的topK问题
/** * return topK string * @param strings string字符串一维数组 strings * @param k int整型 the k * @return str ...
- webpack learn1-初始化项目1
使用Visual Studio Code软件使用准备,先安装一些插件,加快开发效率(还有Language Packs 选择简体中文安装后重启软件,可切换为中文): 下面是项目初始化步骤: 1 软件打 ...
- Appium driver常用API
click driver.find_element implicitly_wait send_keys close quit get_window_size switch_to execute bac ...
- Navicat连接数据库成功,新建查询时提示错误“Cannot create file ……”
Navicat连接数据库成功,新建查询时提示错误"Cannot create file --" 原因:编辑连接{高级}<设置位置>被修改,该oci.dll不正确 解决方 ...
- 51nod1229-序列求和V2【数学,拉格朗日插值】
正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1229 题目大意 给出\(n,k,r\)求 \[\sum_{i=1}^ni ...
- P7515-[省选联考 2021A卷]矩阵游戏【差分约束】
正题 题目链接:https://www.luogu.com.cn/problem/P7515 题目大意 有一个\(n*m\)的矩形\(A\),然后给出一个\((n-1)*(m-1)\)的矩形\(B\) ...
- P4351-[CERC2015]Frightful Formula【组合数学,MTT】
正题 题目链接:https://www.luogu.com.cn/problem/P4351 题目大意 \(n*n\)的矩形,给出第一行和第一列的数,剩下的满足\(F_{i,j}=a*F_{i,j-1 ...
- webpack基本用法及原理(10000+)
1 webpack是什么 所有工具的出现,都是为了解决特定的问题,那么前端熟悉的webpack是为了解决什么问题呢? 1.1 为什么会出现webpack js模块化: 浏览器认识的语言是HTML,CS ...
- SPA测试
1.生产端:环境准备为了进行SPA测试,在生产数据库中创建了SPA测试专用用户,避免与其他用户相互混淆与可能产生的误操作. CREATE USER SPA IDENTIFIED BY SPA DEFA ...
- 日常学习用到的Git指令
Git 常用Git指令 (本地) git init - 将文件夹初始化为Git仓库 git add - 将工作区的指定文件放入暂存区 git status - 查看工作区和暂存区的状态 git com ...