小虎同学打算在华东区域的多个地区开设某虎 工场店,他希望以最少的数量覆盖所有目标地区 ,并降低成本。为了达到这个目标,他将这些地区 抽象为平面上的坐标点,并根据一条简单的规则来判断地区 间是否能够连接。 规则很简单:如果两个地区 的坐标点在同一行或同一列,就认为它们之间存在道路,可以用工场店覆盖。反之,如果地区 坐标不在同一行或同一列,就认为它们之间不存在道路,需要额外的工场店才能覆盖。 现在的问题是:对于一组给定的地区 ,如果我们希望某虎公司 的服务可以覆盖到所有目标地区 ,那么小虎同学最少需要开设几家工场店呢? 通过合理的规划和计算,我们可以得出最优的答案,帮助小虎同学在最少的工场店数量下,实现最全面的服务覆盖。 注意:若地区 可以通过中间地区 去往另一地区 ,则也视作这两个地区 可达 。
区块链毕设网qklbishe.com为您提供问题的解答
小虎同学打算在华东区域的多个地区开设某虎工场店,他希望以最少的数量覆盖所有目标地区,并降低成本。为了达到这个目标,他将这些地区抽象为平面上的坐标点,并根据一条简单的规则来判断地区间是否能够连接。
规则很简单:如果两个地区的坐标点在同一行或同一列,就认为它们之间存在道路,可以用工场店覆盖。反之,如果地区坐标不在同一行或同一列,就认为它们之间不存在道路,需要额外的工场店才能覆盖。
现在的问题是:对于一组给定的地区,如果我们希望某虎公司的服务可以覆盖到所有目标地区,那么小虎同学最少需要开设几家工场店呢?
通过合理的规划和计算,我们可以得出最优的答案,帮助小虎同学在最少的工场店数量下,实现最全面的服务覆盖。
注意:若地区可以通过中间地区去往另一地区,则也视作这两个地区可达 。
并查集,求多个点最后能组成多少个独立的树,可以在遍历每个城市坐标的时候,就把y相同,或者x相同的点组织起来,减少时间复杂度
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 最少需要开设的工场店数量 * @param cities int整型二维数组 城市坐标 * @return int整型 */ int count = -1; public int findFather(int curr, int[] fatherMap){ if(fatherMap[curr]!=(curr)){ fatherMap[curr]=findFather(fatherMap[curr], fatherMap); } return fatherMap[curr]; } public void union(int left, int right, int[] fatherMap){ int lFather = findFather(left, fatherMap); int rFather = findFather(right, fatherMap); if(lFather==rFather){return;} count--; fatherMap[lFather]=rFather; } public int minFactoryStores (int[][] cities) { int[] fatherMap = new int[cities.length]; count=cities.length; Map<Integer, List<Integer>> y2index = new HashMap<>(); Map<Integer, List<Integer>> x2index = new HashMap<>(); for(int i=0;i<cities.length;i++){ fatherMap[i]=i; int x = cities[i][0], y = cities[i][1]; List<Integer> oldValue = y2index.computeIfAbsent(y, e->new ArrayList<>()); oldValue.add(i); oldValue = x2index.computeIfAbsent(x, e->new ArrayList<>()); oldValue.add(i); } for(List<Integer> yValue : y2index.values()){ if(yValue.size()<=1){continue;} for(int i=0;i<yValue.size();i++){ for(int j=i+1;j<yValue.size();j++){ union(yValue.get(i), yValue.get(j), fatherMap); } } } for(List<Integer> xValue : x2index.values()){ if(xValue.size()<=1){continue;} for(int i=0;i<xValue.size();i++){ for(int j=i+1;j<xValue.size();j++){ union(xValue.get(i), xValue.get(j), fatherMap); } } } return count; } }
50:50
以上就是关于问题小虎同学打算在华东区域的多个地区开设某虎 工场店,他希望以最少的数量覆盖所有目标地区 ,并降低成本。为了达到这个目标,他将这些地区 抽象为平面上的坐标点,并根据一条简单的规则来判断地区 间是否能够连接。 规则很简单:如果两个地区 的坐标点在同一行或同一列,就认为它们之间存在道路,可以用工场店覆盖。反之,如果地区 坐标不在同一行或同一列,就认为它们之间不存在道路,需要额外的工场店才能覆盖。 现在的问题是:对于一组给定的地区 ,如果我们希望某虎公司 的服务可以覆盖到所有目标地区 ,那么小虎同学最少需要开设几家工场店呢? 通过合理的规划和计算,我们可以得出最优的答案,帮助小虎同学在最少的工场店数量下,实现最全面的服务覆盖。 注意:若地区 可以通过中间地区 去往另一地区 ,则也视作这两个地区 可达 。的答案
欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程
区块链NFT链游项目方科学家脚本开发培训
从业7年-专注一级市场
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小虎同学打算在华东区域的多个地区开设某虎 工场店,他希望以最少的数量覆盖所有目标地区 ,并降低成本。为了达到这个目标,他将这些地区 抽象为平面上的坐标点,并根据一条简单的规则来判断地区 间是否能够连接。 规则很简单:如果两个地区 的坐标点在同一行或同一列,就认为它们之间存在道路,可以用工场店覆盖。反之,如果地区 坐标不在同一行或同一列,就认为它们之间不存在道路,需要额外的工场店才能覆盖。 现在的问题是:对于一组给定的地区 ,如果我们希望某虎公司 的服务可以覆盖到所有目标地区 ,那么小虎同学最少需要开设几家工场店呢? 通过合理的规划和计算,我们可以得出最优的答案,帮助小虎同学在最少的工场店数量下,实现最全面的服务覆盖。 注意:若地区 可以通过中间地区 去往另一地区 ,则也视作这两个地区 可达 。
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小虎同学打算在华东区域的多个地区开设某虎 工场店,他希望以最少的数量覆盖所有目标地区 ,并降低成本。为了达到这个目标,他将这些地区 抽象为平面上的坐标点,并根据一条简单的规则来判断地区 间是否能够连接。 规则很简单:如果两个地区 的坐标点在同一行或同一列,就认为它们之间存在道路,可以用工场店覆盖。反之,如果地区 坐标不在同一行或同一列,就认为它们之间不存在道路,需要额外的工场店才能覆盖。 现在的问题是:对于一组给定的地区 ,如果我们希望某虎公司 的服务可以覆盖到所有目标地区 ,那么小虎同学最少需要开设几家工场店呢? 通过合理的规划和计算,我们可以得出最优的答案,帮助小虎同学在最少的工场店数量下,实现最全面的服务覆盖。 注意:若地区 可以通过中间地区 去往另一地区 ,则也视作这两个地区 可达 。
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小虎同学打算在华东区域的多个地区开设某虎 工场店,他希望以最少的数量覆盖所有目标地区 ,并降低成本。为了达到这个目标,他将这些地区 抽象为平面上的坐标点,并根据一条简单的规则来判断地区 间是否能够连接。 规则很简单:如果两个地区 的坐标点在同一行或同一列,就认为它们之间存在道路,可以用工场店覆盖。反之,如果地区 坐标不在同一行或同一列,就认为它们之间不存在道路,需要额外的工场店才能覆盖。 现在的问题是:对于一组给定的地区 ,如果我们希望某虎公司 的服务可以覆盖到所有目标地区 ,那么小虎同学最少需要开设几家工场店呢? 通过合理的规划和计算,我们可以得出最优的答案,帮助小虎同学在最少的工场店数量下,实现最全面的服务覆盖。 注意:若地区 可以通过中间地区 去往另一地区 ,则也视作这两个地区 可达 。
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小虎同学打算在华东区域的多个地区开设某虎 工场店,他希望以最少的数量覆盖所有目标地区 ,并降低成本。为了达到这个目标,他将这些地区 抽象为平面上的坐标点,并根据一条简单的规则来判断地区 间是否能够连接。 规则很简单:如果两个地区 的坐标点在同一行或同一列,就认为它们之间存在道路,可以用工场店覆盖。反之,如果地区 坐标不在同一行或同一列,就认为它们之间不存在道路,需要额外的工场店才能覆盖。 现在的问题是:对于一组给定的地区 ,如果我们希望某虎公司 的服务可以覆盖到所有目标地区 ,那么小虎同学最少需要开设几家工场店呢? 通过合理的规划和计算,我们可以得出最优的答案,帮助小虎同学在最少的工场店数量下,实现最全面的服务覆盖。 注意:若地区 可以通过中间地区 去往另一地区 ,则也视作这两个地区 可达 。