HihoCoder第十一周:树中的最长路】的更多相关文章

#1050 : 树中的最长路 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一棵二叉树!还可以拼凑成一棵多叉树--好吧,其实就是更为平常的树而已. 但是不管怎么说,小Ho喜爱的玩具又升级换代了,于是他更加爱不释手(其实说起来小球和木棍有什么好玩的是吧= =).小Ho手中的这棵玩具树现在由N个小球和N-1根木棍拼凑而成,这N个小球都被小Ho标上了不…
hihocoder 1050 树中的最长路(动态规划,dfs搜索) Description 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一棵二叉树!还可以拼凑成一棵多叉树--好吧,其实就是更为平常的树而已. 但是不管怎么说,小Ho喜爱的玩具又升级换代了,于是他更加爱不释手(其实说起来小球和木棍有什么好玩的是吧= =).小Ho手中的这棵玩具树现在由N个小球和N-1根木棍拼凑而成,这N个小球都被小Ho标上了不同的数字,并且这…
#1050 : 树中的最长路 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一棵二叉树!还可以拼凑成一棵多叉树——好吧,其实就是更为平常的树而已. 但是不管怎么说,小Ho喜爱的玩具又升级换代了,于是他更加爱不释手(其实说起来小球和木棍有什么好玩的是吧= =).小Ho手中的这棵玩具树现在由N个小球和N-1根木棍拼凑而成,这N个小球都被小Ho标上了不…
题目来源:树中的最长路 解题思路:枚举每一个点作为转折点t,求出以t为根节点的子树中的‘最长路’以及与‘最长路’不重合的‘次长路’,用这两条路的长度之和去更新答案,最终的答案就是这棵树的最长路长度.只要以类似后序遍历的方式依次访问每个结点,从下往上依次计算每个结点的first值和second值,就能够用O(N)的时间复杂度来解决这个问题. 具体算法(java版,可以直接AC) import java.util.*; public class Main { public class Node {…
#1050 : 树中的最长路 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一棵二叉树!还可以拼凑成一棵多叉树——好吧,其实就是更为平常的树而已. 但是不管怎么说,小Ho喜爱的玩具又升级换代了,于是他更加爱不释手(其实说起来小球和木棍有什么好玩的是吧= =).小Ho手中的这棵玩具树现在由N个小球和N-1根木棍拼凑而成,这N个小球都被小Ho标上了不…
#1050 : 树中的最长路 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一棵二叉树!还可以拼凑成一棵多叉树--好吧,其实就是更为平常的树而已. 但是不管怎么说,小Ho喜爱的玩具又升级换代了,于是他更加爱不释手(其实说起来小球和木棍有什么好玩的是吧= =).小Ho手中的这棵玩具树现在由N个小球和N-1根木棍拼凑而成,这N个小球都被小Ho标上了不…
描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一棵二叉树!还可以拼凑成一棵多叉树——好吧,其实就是更为平常的树而已. 但是不管怎么说,小Ho喜爱的玩具又升级换代了,于是他更加爱不释手(其实说起来小球和木棍有什么好玩的是吧= =).小Ho手中的这棵玩具树现在由N个小球和N-1根木棍拼凑而成,这N个小球都被小Ho标上了不同的数字,并且这些数字都是出于1..N的范围之内,每根木棍都连接着两个不同的小球,并且保证任意两个小球…
[题目链接]:http://hihocoder.com/problemset/problem/1050 [题意] [题解] 有一个经典的求树的直径的方法; 首先; 树的直径的两端的端点必然都在树的叶子上(或在根节点,考虑一条链的情况); 则 设f[i][0]表示离i这个点最远的叶子节点的距离 f[i][1]表示离i这个点第二远的叶子节点的距离 更新的话 f[x][0]=max(f[son][0]+1); f[x][1] = max(second(f[son][0])+1); 则可以通过dp求出来…
题目链接: https://hihocoder.com/contest/hiho11/problem/1 求树中节点对 距离最远的长度 #include <bits/stdc++.h> using namespace std; ; int n; vector<int> G[N]; int d[N]; void dfs(int u, int fa) { ; i<G[u].size(); i++) { int v = G[u][i]; if(v != fa) { d[v] = d…
题意: 求出树上最长路径的长度,并返回. 思路: 刚看到数据<=10^5,假如是单分支的树,那么有5万层,就不能递归,那就用桟实现, 那就要将长度信息保存在另开的数组中,很麻烦!!这题专门给递归实现的.DFS到叶子开始返回长度,经过每个节点就计算以该结点为转折点的最长路径,直到根为止,就找到最大路径了. #include <iostream> #include <cstdio> #include <vector> using namespace std; vect…
题目大意 给出一棵树,其中每两个节点都可以形成一个路径(要求路径中的边只能走一次),求出所有路径中的长度最大值. 分析 树形结构,很容易想到递归,但为了节省时间,要考虑保存中间状态.于是,考虑使用记忆化搜索(也就是树形动态规划). 保存状态 dp[i][2],其中dp[i][0]表示以i为根的子树中路径的两个端点均不位于i的路径的最长值,dp[i][1]表示以i为根的子树中有一个端点位于i的路径的最长值.然后进行状态推演, dp[root][1] = 1 + max(dp[child][1]);…
题意:求出的树中距离最远的两个结点之间相隔的距离. 水题一道,以前只会用路的直径来解. 代码如下: #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<memory> #include<algorithm> using namespace std; ; int dis[maxn],Laxt[maxn],Next[maxn],T…
<网络攻防技术与实践>第十一周作业 SQL注入攻击与实践 1.研究缓冲区溢出的原理,至少针对两种数据库进行差异化研究 缓冲区溢出原理   在计算机内部,输入数据通常被存放在一个临时空间内,这个临时存放的空间就被称为缓冲区,缓冲区的长度事先已经被程序或者操作系统定义好了.向缓冲区内填充数据,如果数据的长度很长,超过了缓冲区本身的容量,那么数据就会溢出存储空间,而这些溢出的数据还会覆盖在合法的数据上,这就是缓冲区和缓冲区溢出的道理.   通常,在栈中分配某个字节数组来保存一个字符串,但是字符串的长…
项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 第十一周作业 博客名称 1903021121-刘明伟-java十一周作业-java面向对象 要求 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决,不要直接截图代码!!),截图(只截运行结果). 扩展阅读都是对大家现阶段学习有用的知识,要求必读,并写一段学习心得. *扩展阅读:Java中的继承和多态.Java中的抽象类 继承.多态和抽象类是java语言的主要特点,要求仔细阅读,并写针对扩展阅读写学习心得,理解后完成两…
第十一周PSP   工作周期:11.24-12.1  本周PSP: C类型 C内容 S开始时间 ST结束时间 I中断时间 T净时间(分) 11月29 文档 写随笔 19:00min 19:30min 0 30min 11月30 文档 写随笔 19:10min 20:00min 10min 40min 本周进度条: 代码行,博文字数,用到的知识点 分类 本周统计 总计 累计代码行数 0 2673 随笔字数 860 20160 至本周的博文字数累计折线图 累积进度图: 至本周的代码折线图 本周PSP…
201521123061 <Java程序设计>第十一周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 本周学习的是如何解决多线程访问中的互斥问题和线程间的合作问题 1.当有多个线程对同一个数据进行访问的时候如果不加以控制就会产生"冲突".解决这种冲突的方法就是互斥访问:在程序代码块前加上synchronized,这样的代码块称为同步代码块.synchronized实现互斥访问主要是靠对象锁来实现的,代码块中每个对象都有一个对象…
201521123072<java程序设计>第十一周学习总结 1. 本周学习总结 2. 书面作业 本次PTA作业题集多线程 互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法实现互斥同步访问,还有什么办法实现互斥同步访问(请出现相关代码)? 这里引用上课的时候的那个例子: 用synchronized修饰方法,代码如下: class Counter { private static int id = 0; private stat…
201521123038 <Java程序设计> 第十一周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法实现互斥同步访问,还有什么办法实现互斥同步访问(请出现相关代码)? 互斥访问:Lock 同步访问:Condition,需要搭配Lock 用PTA上的题目进行修改: class Acco…
## 201521123122 <java程序设计>第十一周实验总结 ## 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 其实这周也没讲多少内容,所以思维导图画的也比较简单.我在这里在总结一下: 1.如果有多个线程需要对同一个数据进行存取时,一定要考虑互斥的情况. 2.关于synchronized的用法: synchronized有两种用法,第一种是代表原子操作的程序代码前加上synchronized标记,第二种是使用synchronized代码块.如…
1.本周学习总结 1.1以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2.书面作业 2.1源代码阅读:多线程程序BounceThread 2.1.1BallRunnable类有什么用?为什么代码中需要调用Thread.sleep进行休眠? 实现了Runnable接口,显示每个启动线程中的小球位置,通过component.repaint()方法实现小球的移动:调用Thread.sleep进行休眠是为了让正在执行的线程休眠一段时间,不消耗CPU资源 2.1.2Ball.java只做了两件…
<面向对象程序设计>第十一周学习总结 第一部分:理论知识 JAVA的集合框架 JAVA的集合框架实现对各种数据结构的封装,以降低对数据管理与处理的难度. 所谓框架就是一个类库的集合,框架中包含很多超类,编程者创建这些超类的子类可较方便的设计设计程序所需的类.例如:Swing类包 集合(Collection或称为容器)是一种包含多个元素并提供对所包含元素操作方法的类,其包含的元素可以由同一类型的对象组成,也可以由不同类型的对象组成. 集合框架:JAVA集合类库的统一架构 集合类的作用…
作业地址 第十一次作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1933 (作业界面已评分,可随时查看,如果对自己的评分有意见请私聊刘助教) 提交情况如图: 实验三作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1942 (作业界面已评分,可随时查看,如果对自己的评分有意见请私聊刘助教) 提交情况如图: (两名同学没有写,一名同学没有提交) 结…
“2017面向对象程序设计(Java)第十一周学习总结”存在问题的反馈及教学安排1.“提出表扬的同学:姜依萍,王雪玲,徐楠,相文君,赵晓未提交作业的同学:任红强,王瑞强,宗鹏新,扎西才让,布旦刀杰,范颜军未写博客的同学:张光巨,扎西才让,李向龙,宗朋新, 冯晓丽 , 马润韬 ,米奇辉 ,卯保云 (至今没写一篇博文),任红强,王瑞强”——米奇辉 任红强 张光炬 王瑞强 宗鹏新 马润韬 卯保云 扎西才让 李向龙九位同学平时成绩罚1分:姜依萍,王雪玲,徐楠,相文君,赵晓平时成绩加1分.2.“仍然有部分…
20172325 2017-2018-2 <Java程序设计>第十一周学习总结 教材学习内容总结 Android简介 Android操作系统是一种多用户的Linux系统,每个应用程序作为单独的Linux进程中的一个用户而运行. Android使用Java作为编程语言. APK表示应用程序包,它是一个基本的zip文件,可使用unzip或Winzip来解压缩.apk文件可以在一台物理设备或模拟器上运行,部署一个Android应用程序很容易. Android版本及API对应表 活动(Activity…
20155237 第十一周java课堂程序 内容一:后缀表达式 abcde/-f+ 内容二:实现Linux下dc的功能,计算后缀表达式的值 填充下列代码: import java.util.Scanner; public class MyDCTester { public static void main (String[] args) { String expression, again; int result; try { Scanner in = new Scanner(System.in…
PSP 一.表格: D日期     C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(mins) 11月24号 站立会议 分配任务&设计final方案 13:00 13:30 0 30 30   编写 bug修正报告 14:35 15:14 0 39 40 11月25号 站立会议 继续完成没完成任务 13:00 13:30 0 30 30   编码 新亮点 14:45 18:23 21 207 180   数据 数据收集整理 19:21 20:48 13  …
第十一周教学总结(12/11-17/11) 教学内容 第4章 循环结构-break continue嵌套循环 4.3 判断素数,4.4求1! + 2! + -. + 100! 课前准备 在蓝墨云班课发布资源: PTA:2018秋第十一周作业4.3-4.4 分享码:23A5D9C819FD737C 课堂设计 本堂课分两个部分:1.第十周作业的讲解:2.本周教学内容的讲授 第一部分:第十周作业总共有四个题目,7-1 求奇数和,7-2 求整数的位数及各位数字之和,7-3 韩信点兵,7-4 整除光棍.从…
FromBottomToTop第十一周项目博客 项目内容 塔防游戏 大体就是在地图上以合理阵型建设防御炮塔来阻止小怪进入我方阵地.玩家需用现有的金币进行炮台建设或升级,金币数可根据打怪个数增加.入侵的怪物有自己的生命值,当损耗尽就会消失.当入侵的怪物数量达到一定数值时,游戏结束. 目标 游戏设有菜单,附有简介与游戏玩法 游戏设有不同的场景地图可供玩家选择 通过智能算法,计算小怪的路径,并能根据玩家的炮台变动进行实时调整 每个场景地图下都设有暂停保存功能,可方便玩家暂停切换 游戏会有最高分记录 实…
首先,由于前几周同学们普遍反映知识点比较难,并且累积较多,难以掌握,所以老师在上周对教学方案进行了如下调整: (1)周四下午理论课第一学时,将结合实验八与实验九的编程题,通过范例演示同学们存在问题的解决方案: (2)周四下午理论课第二学时,将对第一章-第九章教学内容进行复习总结,并进行提问检测: (3)周五早晨实验课,学习第十章,并完成相应实验. 经过对前面知识的系统复习,这周同学们反映前面遗留的问题得到了解决,自己也取得了些许的进步. 上周的学习内容是集合.实验目的与要求是 掌握Vetor.S…
20155233 <Java程序设计> 第十一周课堂练习总结 测试题目 1.修改教材P74 一行代码 NineNineTable.java, 让执行结果是个三角形: 提交在IDEA或命令行中运行结查截图,加上学号水印,没学号的不给成绩 2*3= 6 2*4= 8 3*4=12 2*5=10 3*5=15 4*5=20 2*6=12 3*6=18 4*6=24 5*6=30 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 2*8=16 3*8=24 4*8=32 5*8=4…