\(\text{Problem}\)

给出向量 \(\boldsymbol a = (x1,y1), \boldsymbol b = (x2,y2)\)

求 \(|\lambda_1\boldsymbol a + \lambda_2\boldsymbol b|\) 的最小值

其中 \(\lambda_1,\lambda_2\) 为整数

\(\text{Solution}\)

二维欧几里得算法的应用

然而并不懂是什么东西,我们只考虑这道题

做法见金斌的集训队论文《欧几里得算法的应用》

Here

注意共线的向量答案为 \(0\) 要特判

\(\text{Code}\)

#include <cstdio>
#include <cmath>
#include <iostream>
#define IN inline
using namespace std; struct Vector{double x, y;}a, b;
IN double operator * (const Vector &a, const Vector &b){return a.x * b.x + a.y * b.y;}
IN Vector operator * (const Vector &a, double k){return Vector{a.x * k, a.y * k};}
IN Vector operator + (const Vector &a, const Vector &b){return Vector{a.x + b.x, a.y + b.y};}
IN Vector operator - (const Vector &a, const Vector &b){return Vector{a.x - b.x, a.y - b.y};}
IN double cos(Vector a, Vector b){return a * b / (sqrt(a * a) * sqrt(b * b));} int main()
{
freopen("math.in", "r", stdin), freopen("math.out", "w", stdout);
while (~scanf("%lf%lf%lf%lf", &a.x, &a.y, &b.x, &b.y))
{
if (a * a > b * b) swap(a, b);
if (a * b < 0) b = b * -1;
double cos_alpha = cos(a, b);
if (cos_alpha >= 1){printf("0\n"); continue;}
while (cos_alpha > 0.5)
{
Vector c = b * cos_alpha;
if (c * c < a * a) b = b - a;
else b = b - a * (int)(sqrt(c * c) / sqrt(a * a));
if (a * a > b * b) swap(a, b);
if (a * b < 0) b = b * -1;
cos_alpha = cos(a, b);
}
printf("%.0lf\n", min(a * a, b * b));
}
}

JZOJ 3736. 【NOI2014模拟7.11】数学题的更多相关文章

  1. JZOJ 5773. 【NOIP2008模拟】简单数学题

    5773. [NOIP2008模拟]简单数学题 (File IO): input:math.in output:math.out Time Limits: 1000 ms  Memory Limits ...

  2. JZOJ【NOIP2013模拟联考14】隐藏指令

    JZOJ[NOIP2013模拟联考14]隐藏指令 题目 Description 在d维欧几里得空间中,指令是一个长度为2N的串.串的每一个元素为d个正交基的方向及反方向之一.例如,d = 1时(数轴) ...

  3. JZOJ.5258【NOIP2017模拟8.11】友好数对

    Description

  4. JZOJ.5257【NOIP2017模拟8.11】小X的佛光

    Description

  5. [JZOJ 4307] [NOIP2015模拟11.3晚] 喝喝喝 解题报告

    题目链接: http://172.16.0.132/senior/#main/show/4307 题目: 解题报告: 题目询问我们没出现坏对的连续区间个数 我们考虑从左到有枚举右端点$r$,判断$a[ ...

  6. JZOJ 4611. 【NOI2016模拟7.11】接水问题 (贪心+A*+可持久化线段树)

    Description: https://gmoj.net/senior/#main/show/4611 题解: 先把A从大到小排序,最小的由排序不等式显然. 考虑类似第k短路的A*的做法. 定义状态 ...

  7. [转载]如何在C++03中模拟C++11的右值引用std::move特性

    本文摘自: http://adamcavendish.is-programmer.com/posts/38190.htm 引言 众所周知,C++11 的新特性中有一个非常重要的特性,那就是 rvalu ...

  8. 「考试」noip模拟9,11,13

    9.1 辣鸡 可以把答案分成 每个矩形内部连线 和 矩形之间的连线 两部分 前半部分即为\(2(w-1)(h-1)\),后半部分可以模拟求(就是讨论四种相邻的情况) 如果\(n^2\)选择暴力模拟是有 ...

  9. ZOJ 3780 - Paint the Grid Again - [模拟][第11届浙江省赛E题]

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3780 Time Limit: 2 Seconds      Me ...

  10. [jzoj 5664] [GDOI2018Day1模拟4.6] 凫趋雀跃 解题报告(容斥原理)

    interlinkage: https://jzoj.net/senior/#contest/show/2703/3 description: solution: 考虑容斥原理,枚举不合法的走的步数 ...

随机推荐

  1. orcl substr函数与java substring 的不同

    前天事情急改一个存储过程时遇到了substr方法时,一直用好,然后用其他方法跳过去了,今天有时间回头来验证 才发现和java太不一样了! select substr('为中华之崛起而读书',2,4) ...

  2. Django测试脚本-单表操作(增删改查)-必知必会13条-神奇的双下划线

    目录 一:Django测试脚本 1.测试环境准备 2.tests.py 3.models.py 4.切换MySQL数据库 二:单表操作 1.pk关键字与get关键字 2.增 3.删 4.修 三:必知必 ...

  3. 【openEuler系列】部署文件共享服务Samba

    个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github‍:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying 目录 1 配置环境 2 配置软件安装源 3 安装文 ...

  4. MySQL字符编码、存储引擎、严格模式、字段类型之浮点 字符串 枚举与集合 日期类型

    目录 字符编码与配置文件 数据路储存引擎 创建表的完整语法 字段类型之整型 严格模式 字段类型之浮点型 字段类型之字符串类型 数字的含义 字段类型之枚举与集合 字段类型之日期类型 字符编码与配置文件 ...

  5. 详解kubernetes五种暴露服务的方式

    部署完服务终将是为了访问,那么kubernetes中service和ingress都可以将集群内部的服务能够支持外部访问.service可以让一组 Pod(称为"后端")为集群内的 ...

  6. JSONObject 相关

    /** * 将json转为对应实体类 */ public static Object jsonToJavaObj(String json, Class cs) { return jsonToJavaO ...

  7. python进阶之路11 闭包函数 装饰器

    函数名的多种用法 函数名其实绑定的也是一块内存地址 只不过该地址里面存放的不是数据值而是一段代码 函数名加括号就会找到该代码并执行 1.可以当作变量名赋值 def index():pass res = ...

  8. Java环境搭载的低级错误

    关于Java环境搭载的问题 在按照狂神的教程在Dos窗口执行了javac hello.java后在执行java hello报错"" 发现路径文件夹内并未生成class文件 检查了环 ...

  9. AtCoder Beginner Contest 285 解题报告

    AtCoder Beginner Contest 285 解题报告 \(\text{DaiRuiChen007}\) Contest Link A. Edge Checker 2 假设 \(a\ge ...

  10. day07-Spring管理Bean-IOC-05

    Spring管理Bean-IOC-05 3.基于注解配置bean 3.3自动装配 基本说明: 基于注解配置bean,也可以实现自动装配,使用的注解是:@AutoWired或者@Resource @Au ...