Draw a triangle

Problem - E - Codeforces

题意:给定两个点的坐标求第三个点并且使得三个点围成的三角形面积最小;

这道题涉及了很多知识点:

1.在二维空间中,两个向量a,b叉乘,|a*b|在数值上等于以向量a和向量b为邻边构成的平行四边形的面积;

数量积(点积):意义为A在B上的投影和B的长度的乘积。

AB=x1x2+y1y2

向量积(叉积):绝对值为向量A和B所围的四边形的面积,可以变相的算三角形面积

A*B=x1 * y2 - x2 * y1

所以这道题三角形的面积可以这么做,只是最后的面积*0.5;

我们已知A,B两点,就可以只带AB向量(xb-xa,ya-yb);设常量a,b;

如果设AC的坐标是(x,y)则最后的c的坐标就是(x+xa,y+ya);

AB(x2-x1,y2-y1);(a,b)

AC(x3-x1,y3-y1); (x,y)

所以我们就需要AB×AC就是(x2-x1)*(y3-y1)-(x3-x1)*(y2-y1) ;

                                                  (a   *   y)     -(   x  *    b )

就是S=0.5*(ax-b*y)

用拓展欧几里得算法求解二元一次方程组的最小值

由裴蜀定理可知a*x-b*y=gcd(a,b)的倍数;

最小就是a*x+b*y=gcd(a,b);

所以a*x-b*y的最小值就是gcd(a,-b)的最大公因数

所以我们用扩展欧几里得就能求出x,y;

C的坐标只用在此基础上加上a的坐标即可

#include<bits/stdc++.h>
using namespace std;
int exgcd(int a,int b,int &x,int &y){if(b==0){x=1;y=0;//当a是b的倍数时,a*x+b*y=a;//余数b等于0,除数a就是最大公约数return a;//返回最大公约数}else{int k=exgcd(b,a%b,x,y);//此时的x1和y1是上一层的状态所以方程就为//b*x1+(a%b)*y1=gcd(a,b);//->b*x1+(a-(a/b)*b)*y1=gcd(a,b);//->a*y1+b*(x1-(a/b)*y1)=gcd(a,b);int t=y;y=x-(a/b)*y;//求余数x=t;return k;}
}
signed main(){ios::sync_with_stdio(0);cin.tie(0);int t;cin>>t;while(t--){int x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;int a=(x2-x1);int b=(y1-y2);if(x1==x2){cout<<x1+1<<" "<<y1<<endl;}else if(y2==y1){cout<<x1<<" "<<y2+1<<endl;}else{int x,y;int _gcd=exgcd(b,a,x,y);cout<<x+x1<<" "<<y+y1<<endl;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/881296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java】异常的处理-方式【主线学习笔记】

文章目录 前言1、处理概述2、Java异常处理机制&#xff08;方式&#xff09;方式一&#xff08;抓抛模型&#xff09;&#xff1a;try-catch-finally方式二&#xff1a;throws 异常类型总结 前言 Java是一门功能强大且广泛应用的编程语言&#xff0c;具有跨平台性和高效的执行…

螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)

3 网络及IP规划 3.1 容器连接网络初步规划 规划所有容器与虚拟机的三张网卡以macvlan的方式进行连接&#xff08;以后根据应用可以更改&#xff09;&#xff0c;在docker下创建nat、wifi、nei、wai四张网卡&#xff0c;他们和虚拟机及宿主机上NIC的相关连接参数如下表所示&am…

Linux防火墙-案例(二)snatdnat

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们经过上小章节讲了Linux的部分进阶命令&#xff0c;我们接下来一章节来讲讲Linux防火墙。由于目前以云服务器为主&#x…

脑机接口技术的未来与现状:Neuralink、机械手臂与视觉假体的突破

近年来&#xff0c;脑机接口&#xff08;BCI&#xff09;技术发展迅速&#xff0c;不仅限于科幻小说和电影&#xff0c;已经逐步进入现实应用。特别是马斯克的Neuralink公司推出的“盲视&#xff08;Blindsight&#xff09;”设备&#xff0c;最近获得了FDA的突破性设备认定&am…

Spring Boot:打造下一代医院管理系统

3系统分析 3.1可行性分析 通过对本医院管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本医院管理系统采用JAVA作为开发语言&#xff0c;Spring Boot框…

动态规划算法题目练习——62.不同路径

1.题目解析 题目来源&#xff1a;62.不同路径——力扣 测试用例 2.算法原理 1.状态表示 这时由于避免越界初始化所以将左上角置为虚拟位置&#xff0c;创建一个二维dp表用来存储到当前为止的所有路径 2.状态转移方程 以dp[i,j]为例&#xff0c;起点到该位置的路径是起点到其上…

费曼学习法没有输出对象怎么办?

‌费曼学习法并不需要输出对象。‌费曼学习法的核心在于通过将所学知识以简明易懂的方式解释给自己听&#xff0c;从而加深对知识的理解和记忆。这种方法强调的是理解和反思的过程&#xff0c;而不是简单地通过输出&#xff08;如向他人解释&#xff09;来检验学习效果。费曼学…

YOLO 二元分类器

YOLO 二元分类器 在评估二元分类器性能时&#xff0c;TP、FP、TN和FN是四个核心指标&#xff0c;它们分别代表真阳性、假阳性、真阴性和假阴性。以下是这些指标的定义、计算方法以及在实际应用中的意义&#xff1a; 定义 TP&#xff08;真阳性&#xff09;&#xff1a;模型正…

找不到concrt140.dll如何修复,快来试试这6种解决方法

concrt140.dll是微软Visual C 2015 Redistributable Package中的一个重要动态链接库文件&#xff0c;它在许多Windows应用程序中扮演着关键角色。本文将详细探讨concrt140.dll丢失的原因、影响、解决方法以及预防措施&#xff0c;帮助用户更好地理解和应对这一问题。 一、什么是…

【Verilog学习日常】—牛客网刷题—Verilog进阶挑战—VL45

异步FIFO 描述 请根据题目中给出的双口RAM代码和接口描述&#xff0c;实现异步FIFO&#xff0c;要求FIFO位宽和深度参数化可配置。 电路的接口如下图所示。 双口RAM端口说明&#xff1a; 端口名 I/O 描述 wclk input 写数据时钟 wenc input 写使能 waddr input 写…

算法知识点————贪心

贪心&#xff1a;只考虑局部最优解&#xff0c;不考虑全部最优解。有时候得不到最优解。 DP&#xff1a;考虑全局最优解。DP的特点&#xff1a;无后效性&#xff08;正在求解的时候不关心前面的解是怎么求的&#xff09;&#xff1b; 二者都是在求最优解的&#xff0c;都有最优…

WPF下使用FreeRedis操作RedisStream实现简单的消息队列

Redis Stream简介 Redis Stream是随着5.0版本发布的一种新的Redis数据类型: 高效消费者组:允许多个消费者组从同一数据流的不同部分消费数据,每个消费者组都能独立地处理消息,这样可以并行处理和提高效率。 阻塞操作:消费者可以设置阻塞操作,这样它们会在流中有新数据…

Springboot 整合 durid

文章目录 Springboot 整合 druiddruid的优势配置参数使用整合 Druid配置数据源配置参数绑定配置参数配置监控页面配置拦截器 Springboot 整合 druid druid的优势 可以很好的监控 DB 池连接 和 SQL 的执行情况可以给数据库密码加密可以很方便的编写JDBC插件 配置参数 使用 整…

算法闭关修炼百题计划(四)

仅供个人复习 1.两数相加2.寻找峰值6.岛屿的最大面积3.最大数4.会议室5.最长连续序列6.寻找两个正序数组的中位数 1.两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请…

.NET CORE程序发布IIS后报错误 500.19

发布IIS后浏览时报错误500.19&#xff0c;同时配置文件web.config的路径中也存在问号“?”。 可能原因&#xff1a;没有安装运行时

ViT(Vision Transformer详解)

Transformer作为前沿的深度学习框架&#xff0c;带有多模态的特性&#xff0c;对于不同类型的输入数据&#xff0c;不管是文本还是图像均可进行处理&#xff0c;而ViT则是对于Transformer中的视觉方面&#xff08;也就是输入数据为图像&#xff09;的衍生物&#xff08;因Trans…

MATLAB - 浮动基座机器人的逆运动学

系列文章目录 前言 本例演示如何解决以浮动底座为模型的机器人的逆运动学问题。浮动底座机器人可以在空间中自由平移和旋转&#xff0c;具有六个自由度。浮动基座机器人的逆运动学问题适用于空间应用&#xff0c;即使用安装在浮动和致动基座上的机械臂在空间操纵物体&#xff0…

ubuntu添加 SSH 密钥到 GitHub

好的&#xff0c;以下是详细的步骤&#xff0c;帮助你在 Ubuntu 上生成并添加 SSH 密钥到 GitHub&#xff1a; 1. 检查是否已有 SSH 密钥 首先&#xff0c;检查你是否已经有 SSH 密钥&#xff1a; ls -al ~/.ssh如果看到 id_rsa 或 id_ed25519 文件&#xff0c;则表示你已有…

kubernetes笔记(七)

一、service管理 1.clusterIP 1&#xff09;创建服务 # 资源对象模板 [rootmaster ~]# kubectl create service clusterip mysvc --tcp80:80 --dry-runclient -o yaml [rootmaster ~]# vim mysvc.yaml --- kind: Service apiVersion: v1 metadata:name: mysvc spec:type: Cl…

从编程视角看生命、爱、自由、生活的排列顺序

从编程视角看生命、爱、自由、生活的排列顺序 离开大学校园&#xff0c;踏入大厂成为一名算法工程师后&#xff0c;我常以编程思维看待生活中的事物。在思考生命、爱、自由和生活的排列顺序时&#xff0c;发现从编程角度分析这些概念会有独特见解。 一、生命——程序的核心代…