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

什么是网站名绍兴网站开发

什么是网站名,绍兴网站开发,郑州网站建设 云极,wordpress如何修改语言设置目录 1、找到冠军 Ⅰ- 暴力 2、找到冠军 Ⅱ - 寻找入度为0的点 3、在树上执行操作以后得到的最大分数 - dfs树 逆向思考 1、找到冠军 Ⅰ- 暴力 100115. 找到冠军 I class Solution {public int findChampion(int[][] g) {int ng.length;for(int i0;i<n;i){int cnt0;for…

目录

1、找到冠军 Ⅰ- 暴力

2、找到冠军 Ⅱ - 寻找入度为0的点

3、在树上执行操作以后得到的最大分数 - dfs树 + 逆向思考


1、找到冠军 Ⅰ- 暴力

100115. 找到冠军 I

class Solution {public int findChampion(int[][] g) {int n=g.length;for(int i=0;i<n;i++){int cnt=0;for(int j=0;j<n;j++)if(g[i][j]==1) cnt++;if(cnt==n-1) return i;}return 1;}
}

 

2、找到冠军 Ⅱ - 寻找入度为0的点

100116. 找到冠军 II

思路:

我们通过样例发现冠军点的入度肯定为0,假设有多个入度为0的点,是否能判断出谁是冠军?我们画几种情况看看

我们发现如果有多个入度为0的点,则无法判断出冠军,因为冠军并不是由战胜队伍的数量来衡量的,因此我们只需要找入度为0的点,如果有多个则返回-1

简化代码可以标记入度为0的点,然后遍历找出入度为0的点,如果出现多个则返回-1

class Solution {public int findChampion(int n, int[][] edges) {int[] st=new int[n];for(int[] e:edges)st[e[1]]=1;  //将入度不为0的点标记int res=-1;for(int i=0;i<n;i++){if(st[i]==0){if(res!=-1) return -1; //如果入度为0且有多个则无法判断冠军res=i;}}return res;}
}

3、在树上执行操作以后得到的最大分数 - dfs树 + 逆向思考

100118. 在树上执行操作以后得到的最大分数

思路:

要保证这棵树是健康的,且要保证得分最大,即保证每条分支至少保留一个节点不操作(保证该路径和不为0)

所以问题转换为找出每个分支满足健康情况下的【代价和最小】的不操作点

操作点最大代价和 = 总代价 - 不操作点最小代价和

如下图,选2,5,6为不操作点,则能保证每条分支代价和均不为0,且价值最大

我们设dfs(x)为以x为根节点的健康子树中不操作节点的最小代价

     dfs(cur)=min\left \{ v[cur],cnt \right \}   其中cnt为以cur为根节点的子树的最小代价和

则答案=总value - dfs(0) 【整棵健康数中不操作节点的最小代价】

  • 在dfs函数中,遍历cur节点的子节点,求出子节点的最小代价和cnt
  • 返回 min(cur的价值,以cur为根节点的子树的最小代价cnt)
  • 如果cur为叶子节点,则dfs值为val[cur]

为什么需要st[ ]数组标记,建双向边?

因为题目声明根节点为0,从0开始,且为无向树,因此需要双向建边

如果单向建边就会出现下面的这种错误样例

class Solution {public long dfs(int cur,int[] v,List<Integer>[] g,int[] st ){long cnt=0;for(int x:g[cur]) if(st[x]==0){st[x]=1;cnt+=dfs(x,v,g,st);}//cnt=0表示该节点为叶子节点//说白了就是看:是选某子树的根节点值or根节点下子树代价和最小值return cnt==0? v[cur]:Math.min((long)v[cur],cnt);} public long maximumScoreAfterOperations(int[][] edges, int[] values) {int n=values.length;List<Integer>[] g=new ArrayList[n+1];for(int i=0;i<n;i++) g[i]=new ArrayList<>();int[] st=new int[n+1];long res=0;for(int x:values) res+=x;//建树for(int[] e:edges){g[e[0]].add(e[1]);g[e[1]].add(e[0]);}st[0]=1;return res-dfs(0,values,g,st);  //dfs(x)表示以x为根节点的健康子树中不操作节点的最小代价//最大代价 = 总代价 - 不操作节点的最小代价和}
}

 

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

相关文章:

  • 网站同城在线哪里做店面门面设计
  • 手机网站开发怎么样电商网站建设那家好
  • 做微商能利用的网站有哪些问题客户管理系统网站模板下载
  • 关于网站建设的请示范文学校网站建设步骤过程
  • 网站建设 乐达云创一站式婚庆公司
  • php违章网站开发网站建设推广的广告语
  • 济南手机网站建设报价中小企业怎么优化网站
  • 网站开发承诺函制作网页时用的最多的图像文件
  • 山东网站建设SEO优化制作设计公司网站建设算什么专业
  • 免费推广网站视频做网站有什么必要
  • 图书馆网站建设公司运营企业网站怎么赚钱
  • 宜黄住房和城乡建设部网站攀枝花移动网站建设
  • 网站充值 下模板wordpress怎么博客排版
  • 读书网站建设策划书摘要网站的投资和建设项目
  • 网站过期后企业做网站建设
  • 如何利用谷歌云做自己的网站怎么制作软件程序
  • 网站动态交互中国贸易服务网
  • 网站访问大小地产行业型网站开发
  • 青岛外贸网站建站公司广州网站推广电话
  • 百度网站上做推广受骗网站建设一条龙服务
  • 详述网站建设的过程简答题wordpress 数据库宕机
  • 学前端的三大忠告北京seo优化排名
  • 网络营销网站建设公司flash网站设计实例
  • 网站改版 网站存在问题网站模板演示
  • 有字体设计网站装修设计公司咨询
  • 做网站搭建需要什么人百度云加速 网站关键词
  • 公司做网站百度可以搜到吗最便宜云服务器
  • 商品展示的网站源码深圳定制建站公司电话
  • 上海在线做网站苏州网站建设姜超
  • 广州网站优化页面建设网证书查询平台免费