zoukankan      html  css  js  c++  java
  • U138415 堆箱子 | 扩展欧几里得 扩欧

    前置知识

      扩展欧几里得 传送门

    题目描述

    仓库中有很多的箱子,这天小武想把箱子收拾一下。仓库是一个长方体,我们不用考虑仓库的高度,仓库的长度为 N,宽度为M,箱子是一个标准的正方体,边长为L。小武很严格,对于箱子的摆放有很严格的要求。小武要求用若 干根直线等分仓库的长和宽,而箱子只能放在等分长和宽的直线的交点上,并且一个箱子到四个方向的距离(可能 是到另一个箱子, 也可能是到仓库的边缘),必须相同。那么在满足要求的前提下,小武想放心尽可能多的箱子, 那么此时一个箱子到四个方向的距离是多少呢?(设这个距离为x)
    BNFhgf.jpg

    输入格式

    一行三个数表示L,N,M

    输出格式

    一行一个实数表示距离x,精确到小数点后五位 如果无法满足要求,输出-1

    输入输出样例

    输入 #1
    2 18 13
    输出 #1
    0.50000
    输入 #2
    4 26 26
    输出 #2
    0.28571
    输入 #3
    3 46 18
    输出 #3
    0.50000

    说明/提示

    数据范围

    对于24%的数据,1≤L≤100,1≤N,M≤1000
    对于48%的数据,1≤L≤1000,1≤L,N,M≤10^6
    对于80%的数据,1≤L≤10^6
    对于100%的数据,1≤L,N,M≤10^9

    样例解释

    对于样例1,横排放7个箱子,竖排放5个箱子,x=(18-27)/8=(13-25)/6=0.50000

    题解

    题意解释

      不解释

    题解

      其实可以推式子直接输出的,但我觉像我我这种蒟蒻只能用扩展欧几里得

      先来看题, 设横着放x个,竖着放y个,显然题目是要让我们满足:

        

      变乘法

         

         

      如果刚学完扩欧, 一定可以想到变形成这样:

        

       现在就变成扩欧板子题, 关于负数的处理可以看前面的那片博客。

      因为要使得箱子最多, 就要让x*y最大,枚举所有可行的解, 取最大的x*y更新答案即可。  

       注意M-N要为正整数, 如果M<N 交换M, N即可。

         

  • 相关阅读:
    .net 使用 swagger 操作
    oracle 基础
    关于webapi跨域问题的一些坑坑
    sqlHelper
    微博数据接入开发
    mvc后台上传
    sql server 报错处理
    asp.net 微信开发(二)
    收集一些关于OI/ACM的奇怪的东西……
    LeetCode 229 Majority Element II
  • 原文地址:https://www.cnblogs.com/ltdjcoder/p/13928017.html
Copyright © 2011-2022 走看看