A . 梦想成为天文学家
这道题是一个原题,我们要用向量的知识来解决它,求解的就是四点共面。

//四个点三个向量 构成一个行列式 行列式的结果为0则共面否则不共面
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct p{int x,y,z;
}P[5];
p s[5];
int main()
{int t,cnt=0;scanf("%d",&t);while(t--){for(int i=1;i<=4;i++){scanf("%d %d %d",&P[i].x,&P[i].y,&P[i].z);}s[1].x=P[2].x-P[1].x;s[1].y=P[2].y-P[1].y;s[1].z=P[2].z-P[1].z;s[2].x=P[3].x-P[1].x;s[2].y=P[3].y-P[1].y;s[2].z=P[3].z-P[1].z;s[3].x=P[4].x-P[1].x;s[3].y=P[4].y-P[1].y;s[3].z=P[4].z-P[1].z;int ans;ans=s[1].x*s[2].y*s[3].z+s[2].x*s[3].y*s[1].z+s[1].y*s[2].z*s[3].x-s[3].x*s[2].y*s[1].z-s[2].x*s[1].y*s[3].z-s[1].x*s[2].z*s[3].y;if(ans==0){cout<<"Day #"<<++cnt<<": "<<"Yes"<<endl;}else{cout<<"Day #"<<++cnt<<": "<<"No"<<endl;}}return 0;
}

B 线段的投影
这道题是一个二维几何的题目,要求解的多线段是否在同一条直线上的投影互相之间至少有一个交点。
其实两个线段必定可以找一个角度使得其投影在直线上有交点,所以我们就可以通过枚举两个线段的端点所构成直线的方式来判断,如果枚举一条直线可以与所有线段相交,即可证明所有的线段可以在同一条直线上的投影有公共点。
特判:
只有一个点或两个点时,一定可以找到一条直线。
还有就是对于枚举的点 两点距离小于1e-8 的点可以看成同一点不必枚举。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const double eps = 1e-8;
int sgn(double x){if(fabs(x)<eps)return 0;if(x<0)return -1;else return 1;
}
struct Point {double x,y;Point (){};Point (double _x,double _y){x=_x,y=_y;}void input(){scanf("%lf%lf",&x,&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 distance (Point p){return hypot(x-p.x,y-p.y);}
};
struct Line{Point s,e;Line(){};Line(Point _s,Point _e){s=_s;e=_e;}void input(){s.input();e.input();}int line_cross_seg(Line v){int d1 = sgn((e-s)^(v.s-s));int d2 = sgn((e-s)^(v.e-s));if((d1^d2) == -2)return 2;return (d1==0||d2==0);}
};
Line l[110];
bool judge(Line v,int n){for(int i=0;i<n;i++){//cout<<v.line_cross_seg(l[i])<<endl;if(v.line_cross_seg(l[i])==0)return false;}return true;
}
int main(){int t,n;scanf("%d",&t);while(t--){scanf("%d",&n);for(int i=0;i<n;i++){l[i].input();}if(n==1){printf("Yes!\n");continue;}int flag=0;for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){bool ans1,ans2,ans3,ans4;if(l[i].s.distance(l[j].s)>eps)ans1=judge(Line(l[i].s,l[j].s),n);if(l[i].s.distance(l[j].e)>eps)ans2=judge(Line(l[i].s,l[j].e),n);if(l[i].e.distance(l[j].s)>eps)ans3=judge(Line(l[i].e,l[j].s),n);if(l[i].e.distance(l[j].e)>eps)ans4=judge(Line(l[i].e,l[j].e),n);//cout<<ans1<<ans2<<ans3<<ans4<<endl;if(ans1||ans2||ans3||ans4){flag=1;break;}if(flag)break;}}if(flag)printf("Yes!\n");else printf("No!\n");}return 0;
}

C叉乘来了。
简单的叉乘求法向量

#include<iostream>
#include<cstdio>
using namespace std;
struct point{double x,y,z;point(){};point(double _x,double _y,double _z){x=_x;y=_y;z=_z;}void input(){scanf("%lf%lf%lf",&x,&y,&z);}void output(){printf("%.2lf %.2lf %.2lf\n",x,y,z);}point operator ^ (const point &b)const{return point (y*b.z-z*b.y,z*b.x-x*b.z,x*b.y-y*b.x);}
};
int main(){point a,b,c;a.input();b.input();c=a^b;c.output();
}

2019 SUST暑期集训题解(计算几何(二))相关推荐

  1. 2019 SUST暑期集训题解(计算几何(平面几何))

    A 来,求个三角形面积玩玩. 利用叉乘的特性就直接得到三角形的面积,如果三点共线则三点不构成三角形.此时叉乘结果为0. #include<iostream> #include<cst ...

  2. SUST暑期集训题解(可持久化数据结构)

    A 可持久化线段树 #include<iostream> #include<cstdio> #include<cstring> #include<algori ...

  3. 2019年暑期集训总结

    2019年的暑期集训结束了,时间是2019/07/18--2019/08/23,这也是我参加的第二次暑假集训了吧,一个多月的时间,学到了很多,也收获了很多,不仅仅是学习,关系也近了很多,也成长了很多. ...

  4. SUST 2019暑期集训题解(差分约束+生成树+传递闭包)

    A 这个不等式组很眼熟吧 这道题的话上课讲过就是根据不等式建图然后跑一下最短路就可以了. #include<iostream> #include<cstring> #inclu ...

  5. 陕西科技大学暑期集训热身赛(二)

    1,三角形的面积 题目描述 我愿为自己加上private 在你的class中 只有你能调用 Lily的老师给他出了一个问题,给出三角形的三边长abc,lily要计算出这个三角形的面积,liy比较懒(周 ...

  6. 题解报告(CDUT暑期集训——第四场)

    题解报告(CDUT暑期集训--第四场) Problem D. Nothing is Impossible HDU - 6335 思路:水题 排个序循环判断就出来了 AC代码 #include<s ...

  7. 题解报告(CDUT暑期集训——第五场)

    题解报告(CDUT暑期集训--第五场) B - Beautiful Now HDU - 6351 思路:直接暴力全排列就行了 最多\(10!\)次 题目限制2500ms 全排列大概是2000多ms(最 ...

  8. 题解报告(CDUT暑期集训——第三场)

    题解报告(CDUT暑期集训--第三场) A - Problem A. Ascending Rating HDU - 6319 思路:单调队列板子题?(但是弱的一批的我还是不会用(有空补上 用的滑动窗口 ...

  9. 题解报告(CDUT暑期集训——第二场)

    题解报告(CDUT暑期集训--第二场) D - Game HDU - 6312 思路:水题 Alice一直是必胜态 AC代码 #include<stdio.h> #include<i ...

最新文章

  1. Maven添加本地Jar包方案1
  2. mysql 5.7 缺点_MySQL · 特性分析 · MySQL 5.7 外部XA Replication实现及缺陷分析
  3. Spacebuilder在Mono上运行修改备忘
  4. 探究C/C++可变参数
  5. 【DIY】震精!他居然用esp8266做出掌上游戏机......恐龙跑酷游戏还能这样玩!请广泛转发!...
  6. php wap页下拉刷新代码,js实现的移动端下拉刷新功能代码实例
  7. Oracle010316,安装oracle后登录时出现 ERROR: ORA-01031 insufficient privileges
  8. html 拖放实现拼图游戏,Canvas drag 实现拖拽拼图小游戏
  9. 音乐播放器界面如何设计?
  10. java 地址传递 返回值_Java中的值传递和引用传递
  11. 若依如何实现翻页保留选择?
  12. linux composer使用php,记录linux下composer使用的坑爹过程
  13. python开发的代码如何加密_python 代码加密
  14. 逆元的概念及求解方法
  15. 2022计算机系统大作业——程序人生-Hello’s P2P
  16. ubuntu 找不到固态硬盘
  17. 记录docker nacos解决Field ‘encrypted_data_key‘ doesn‘t have a default valu方法
  18. 题目 1224: 整除的尾数
  19. OpenLayers基础:多方底图
  20. DBLP数据集XML使用python SAX解析 作者名字显示错误问题

热门文章

  1. 异或(XOR)运算加密/解密算法
  2. 单目SLAM在移动端应用的实现难点有哪些?
  3. P11-Windows与网络基础-Windows用户管理
  4. 关于计算机如何实现减法操作
  5. GSM手机卡头不安全,可轻易复制来使用
  6. 服务器配置mysql
  7. 使用 Azure Monitor 快速构建 OS 内部指标监控平台
  8. AI一周热闻:12306数据泄露,嫌疑人被捕;BERT提升文档检索性能至1.5-2倍
  9. 忆17级信管杨友大三学年个人风雨兼程岁月
  10. 汗,Ackerman函数......