当前位置: 首页 > news >正文

门户网站建设经验总结深圳做微信网站制作

门户网站建设经验总结,深圳做微信网站制作,做移动网站优化优,汤原建设局网站题目 微商模式比较典型,下级每赚100元就要上交15元,给出每个级别的收入,求出金字塔尖上的人收入。 输入描述 第一行输入N,表示有N个代理商上下级关系 接下来输入N行,每行三个数:代理商代号 上级代理商代号 代理商赚的钱…

题目

微商模式比较典型,下级每赚100元就要上交15元,给出每个级别的收入,求出金字塔尖上的人收入。
输入描述
第一行输入N,表示有N个代理商上下级关系
接下来输入N行,每行三个数:代理商代号 上级代理商代号 代理商赚的钱
输出描述
输出一行,两个以空格分隔的整数,含义如下: 金字塔顶代理商 最终的钱数
示例1:
输入
3
1 0 223
2 0 323
3 2 1203
输出
0 105
说明
2的最终收入等于323+1203/10015=323+ 180
0的最终收入等于(323+ 180 + 223)/100
15= 105
示例2:
输入
4
1 0 100
2 0 200
3 0 300
4 0 200
输出
0 120

思路

题目未说明0一定就是顶级代理商,代理商之间的层级关系和编号大小无任何 关系。
使用两个map存放信息:
Map<Integer, List< Integer>> proxyBusiness 存放代理商关系,key存代理商id,val存下线集合
Map<Integer,Integer> pricesMap=new HashMap<>() 存每个代理商自己赚的钱
首先我们需要找到顶级代理商,在所有代理商中,如果该代理商自己没有赚钱,那么就是顶级代理商

因为题目明确说了,只能输出一行,且每行三个数的含义是:代理商代号 上级代理商代号 代理商赚的钱),如果顶级代理商要赚钱,假定其编号是4,那么其输入格式必然是:4 ? x,没有上级代理商,所以无法处理?号输入什么。因此,本文解题逻辑就是输入中不会输入顶级代理商自己赚的钱。
如果要处理含顶级代理商自己赚的钱的信息,可以假想输入是:4 4 x的格式,此时判断顶级代理商的逻辑可以考虑成:将输入第一列放入子代理商集合,输入第二列放入父代理商集合。遍历所有父代理商,如果其没有出现在子代理商的集合中,那么其是顶级代理商。

然后设计dfs递归函数:dfs(root),root代表传入的代理商编号,返回的值代表该代理商能够赚的钱

如果root没有子代理商,那么返回其自己赚的钱即可
如果有子代理商,遍历其所有子代理商,累加子代理商赚的钱sum
最后返回该代理商自己赚的钱+sum/100*50即可

题解

package hwod;import java.util.*;public class MicroBusiness {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = Integer.parseInt(sc.nextLine());int[][] nums = new int[n][3];for (int i = 0; i < n; i++) {nums[i] = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();}int[] res = microBusiness(nums);System.out.println(res[0] + " " + res[1]);}private static Map<Integer, List<Integer>> proxyBusiness = new HashMap<>(); //存关系private static Map<Integer,Integer> pricesMap=new HashMap<>(); //每个代理商赚的钱private static int[] microBusiness(int[][] nums) {Set<Integer> set = new HashSet<>();//存放有哪些代理商for (int i = 0; i < nums.length; i++) {List<Integer> oldChild = proxyBusiness.getOrDefault(nums[i][1], new ArrayList<>());oldChild.add(nums[i][0]);proxyBusiness.put(nums[i][1], oldChild);pricesMap.put(nums[i][0], nums[i][2]);set.add(nums[i][1]);set.add(nums[i][0]);}int root = -1;//寻找顶级代理商,自己不赚钱的代理商for (Integer proxy : set) {if (!pricesMap.containsKey(proxy)) {root = proxy;break;}}int res=dfs(root);return new int[]{root,res};}private static int dfs(int root) {if(!proxyBusiness.containsKey(root)) return pricesMap.getOrDefault(root,0);List<Integer> subList = proxyBusiness.get(root);int sum = 0;for (int i = 0; i < subList.size(); i++) {Integer sub = subList.get(i);sum += dfs(sub);}return pricesMap.getOrDefault(root,0)+sum / 100 * 15;}
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

http://www.yayakq.cn/news/458451/

相关文章:

  • 宝安网站建设最新发布的最新
  • 网站首页素材wordpress教程网59iwp
  • 网页制作网站素材有了服务器怎么做网站
  • 做网站怎么开后台安阳吧
  • 网站建设的现状和趋势怎么样用ps做网站
  • 杭州网站优化搜索中国铁建商城电子商务平台
  • 天宁网站建设制作有没有做任务的网站
  • 建社个人网站酒店网站程序
  • 电子图书网站开发的目的网站侧边栏导航
  • 如何禁止通过ip访问网站烟台网站营销
  • 邯郸网站建设哪儿好做百度手机网站优化
  • 襄阳微信网站建设郑州妇科医院前十强排名
  • 重庆网站界面设计兰州网站建设专家
  • 怒江州建设局网站企业备案网站高质量网站内容建设标准
  • 怎样进行网站推广本地企业网站建设服务
  • html5网站框架泰康人寿网站如何做计划领取
  • 合肥网站建设之4个细节要注意怎么给喜欢的人做网站
  • 网站推广策划思路的内容网络营销外包价格
  • 网站开发硬件需求模板规格尺寸
  • 大麦网网站建设的功能定位网易考拉的网站建设
  • 网站引导页模板58同城推广代运营
  • 企业只有建立自己的网站河北省网站建设公司
  • 网站建设流程规划移动端网站优化
  • 嘉兴网站建设的前景wordpress 下载
  • 上海金山网站建设公司网络舆情应对及处置方案
  • 黑龙江省瑞驰建设集团网站网站官网上的新闻列表怎么做
  • 厦门网站建设屈兴东网站开发与数据库
  • 移动端网站建设公司优模网
  • 网站建设布局天津外包加工网
  • asp.net网站开发怎样给自己的店子做网站