首页 > 其他分享 >【112】

【112】

时间:2022-11-02 10:34:06浏览次数:45  
标签:int 信号强度 towers radius 坐标 112 tower

1620. 网络信号最好的坐标  

给你一个数组 towers 和一个整数 radius 。

数组  towers  中包含一些网络信号塔,其中 towers[i] = [xi, yi, qi] 表示第 i 个网络信号塔的坐标是 (xi, yi) 且信号强度参数为 qi 。所有坐标都是在  X-Y 坐标系内的 整数 坐标。两个坐标之间的距离用 欧几里得距离 计算。

整数 radius 表示一个塔 能到达 的 最远距离 。如果一个坐标跟塔的距离在 radius 以内,那么该塔的信号可以到达该坐标。在这个范围以外信号会很微弱,所以 radius 以外的距离该塔是 不能到达的 。

如果第 i 个塔能到达 (x, y) ,那么该塔在此处的信号为 ⌊qi / (1 + d)⌋ ,其中 d 是塔跟此坐标的距离。一个坐标的 信号强度 是所有 能到达 该坐标的塔的信号强度之和。

请你返回数组 [cx, cy] ,表示 信号强度 最大的 整数 坐标点 (cx, cy) 。如果有多个坐标网络信号一样大,请你返回字典序最小的 非负 坐标。

注意:

  • 坐标 (x1, y1) 字典序比另一个坐标 (x2, y2) 小,需满足以下条件之一:
    • 要么 x1 < x2 ,
    • 要么 x1 == x2 且 y1 < y2 。
  • ⌊val⌋ 表示小于等于 val 的最大整数(向下取整函数)。

示例 1:

 

 

输入:towers = [[1,2,5],[2,1,7],[3,1,9]], radius = 2
输出:[2,1]
解释:
坐标 (2, 1) 信号强度之和为 13
- 塔 (2, 1) 强度参数为 7 ,在该点强度为 ⌊7 / (1 + sqrt(0)⌋ = ⌊7⌋ = 7
- 塔 (1, 2) 强度参数为 5 ,在该点强度为 ⌊5 / (1 + sqrt(2)⌋ = ⌊2.07⌋ = 2
- 塔 (3, 1) 强度参数为 9 ,在该点强度为 ⌊9 / (1 + sqrt(1)⌋ = ⌊4.5⌋ = 4
没有别的坐标有更大的信号强度。

示例 2:

输入:towers = [[23,11,21]], radius = 9
输出:[23,11]
解释:由于仅存在一座信号塔,所以塔的位置信号强度最大。

示例 3:

输入:towers = [[1,2,13],[2,1,7],[0,1,9]], radius = 2
输出:[1,2]
解释:坐标 (1, 2) 的信号强度最大。
-------------------------------------------------------------------------------------------------
代码如下:
class Solution {     public int[] bestCoordinate(int[][] towers, int radius) {   //用于记录xy坐标的最大值         int xMax = 0;         int yMax = 0;         for(int[] tower : towers){             xMax = Math.max(xMax, tower[0]);             yMax = Math.max(yMax, tower[1]);         }   //将范围内每一点的信号强度都算出来,比较大小
        int cx = 0;         int cy = 0;         int maxStrength = 0;         for(int x = 0; x <= xMax; x++){             for(int y = 0; y <= yMax; y++){                 int target[] = {x, y};                 int strength = 0;                 for(int[] tower : towers){                     int distance = getDistance(target, tower);                     if(distance <= radius * radius){                         strength += Math.floor(tower[2]/(1 + Math.sqrt(distance)));//Math.floor是向下取整函数                     }                 }     //由于是从0开始遍历,只取字典序小的最大信号强度,之后与他相同的直接排除                 if(strength > maxStrength){                     cx = x;                     cy = y;                     maxStrength = strength;                 }
            }         }
        return new int[]{cx, cy};
    }
    public int getDistance(int[] target, int[] tower){         return (tower[0] - target[0]) * (tower[0] - target[0]) + (tower[1] - target[1]) * (tower[1] - target[1]);     }
}
-------------------------------------------------------------------------------------------------
由于数据量较小(坐标<50),也可以把0-50的所有坐标遍历,暴力破解。



标签:int,信号强度,towers,radius,坐标,112,tower
From: https://www.cnblogs.com/wzxxhlyl/p/16849979.html

相关文章

  • 洛谷-P1122 最大子树和
    最大子树和树形dp对于一个节点来说,如果删除掉一个连接子节点的边,则以该子节点为根的子树上面的贡献都会变成\(0\)设计状态:\(dp[u]\),表示以\(u\)为根的子树中,贡献值最......
  • 力扣 112. 路径总和
    112.路径总和给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标......
  • mac版 AutoCAD(LT)安装失败,提示错误“Error 112”的解决方法
    很多网友反映,第一次安装AutoCAD(LT)2022或者2023的时候都能成功,但是有问题卸载后,想要重装时,安装到一定进度后,进度条会回退到0,然后提示安装失败,错误Error112。,这种情况如何......
  • UVA11297 Census(kd-tree)
    题意:给定一个\(n\timesn\)的网格,要求支持修改和询问某个矩阵的最大值和最小值。解法多样,可以用二维线段树,我用的是\(kd-tree\)。那么这题就很裸了,我在这里只提几点需......
  • 【CF1120D】Power Tree(建图,差分,最小生成树)
    题面题意有点难懂。主要是洛谷给的翻译太zz了。大概的意思是:给定一棵\(n\)个点的有根树,\(1\)为根,每一个点有一个代价\(c_i\)。然后有两个人Alice和Bob在玩游......
  • mac版 AutoCAD(LT)安装失败,提示“Error 112”的解决方法
    很多网友反映,第一次安装AutoCAD(LT)2022或者2023的时候都能成功,但是有问题卸载后,想要重装时,安装到一定进度后,进度条会回退到0,然后提示安装失败,Error112。,这种情况如何解决......
  • uva11235
    给一个非降序的排列{a},多次询问区间(l,r)中出现次数最大的值,输出这个次数 比如12668881023 相同的数据靠在一起,我们将相同数据组成一块(要处理出这个块的信......
  • POJ 1125(Floyd)
    裸FloydProgramP1125;constmaxn=100;maxedge=10;NULL=-2139062144;varn,i,j,k,m,v,t,ans:longint;f:array[1..maxn,1..maxn]oflongint;functionmax(a,b:......
  • 1121 - Reverse the lights 思维题
    ​​http://www.ifrog.cc/acm/problem/1121​​我看到这些翻转的题就怕,可能要练下这些专题。我最怕这类题了。一开始想了下dp,dp[i][0/1]表示完成了前i位,第i位不按/按,的......
  • ctfshow web112(伪协议绕过is_file函数)
    $file=$_GET['file'];if(!is_file($file)){highlight_file(filter($file));}else{echo"hacker!";}这里的is_file函数,在使用php的伪协议时候会返回false,除......