有一棵二叉苹果树,如果树枝有分叉,一定是分两叉,即没有只有一个儿子的节点。
这棵树共 N 个节点,编号为 1 至 N,树根编号一定为 1。
我们用一根树枝两端连接的节点编号描述一根树枝的位置。
一棵苹果树的树枝太多了,需要剪枝。但是一些树枝上长有苹果,给定需要保留的树枝数量,求最多能留住多少苹果。
这里的保留是指最终与1号点连通。
第一行包含两个整数 N 和 Q,分别表示树的节点数以及要保留的树枝数量。
接下来 N−1行描述树枝信息,每行三个整数,前两个是它连接的节点的编号,第三个数是这根树枝上苹果数量。
输出仅一行,表示最多能留住的苹果的数量。
1≤Q<N≤100.
N≠1,
每根树枝上苹果不超过 30000个。
5 2
1 3 1
1 4 10
2 3 20
3 5 20
21
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=105,M=2*N;
int h[N],ne[M],w[M],e[M],idx;
int n,m;
int dp[N][N];
void add(int x,int y,int z){
e[idx]=y,w[idx]=z,ne[idx]=h[x],h[x]=idx++;
}
void dfs(int u,int f){
for(int i=h[u];~i;i=ne[i]){
int s=e[i];
if(s==f)continue;
dfs(s,u);
//j代表以u为根节点且当前可保留的树枝数
for(int j=m;j>=0;j--){
//k代表以u为根节点的子树可用于保留的树枝树,
//由于如果要保留子树,则必须保留保留根节点到子树的一条边,所以子树最多能够使用的边为j-1
for(int k=0;k<=j-1;k++){
dp[u][j]=max(dp[u][j],dp[s][k]+dp[u][j-k-1]+w[i]);
}
}
}
}
int main(){
cin>>n>>m;
memset(h,-1,sizeof h);
for(int i=0;i<n-1;i++){
int x,y,z;
cin>>x>>y>>z;
add(x,y,z);
add(y,x,z);
}
dfs(1,-1);
cout<<dp[1][m]<<endl;
return 0;
}
大家好,又见面了,我是你们的朋友全栈君。1.在定义时初始化。double[][]a=newdouble[][]{ {1,2,3},{4,2,7}}; double[][]b=newdouble[][]{ {3,3},{1,1},{2,2}};复制如图,a中的{1,2,3}即为第一行,{4,2,7}为第二行。2.先定空间,随后赋值。double[][]container=newdouble[3][4]; for(inti=0;i<3;i++){ for(intj=0;j<4;j++){ container[i][j]=4.5; } }复制发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141178.html原文链接:https://javaforall.cn
前言Hello!小伙伴! 首先非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ 哈哈自我介绍一下 昵称:海轰 标签:程序猿一只|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,有幸拿过国奖、省奖等,已保研。目前正在学习C++/Linux(真的真的太难了~) 学习经验:扎实基础+多做笔记+多敲代码+多思考+学好英语! 日常分享:微信公众号【海轰Pro】记录生活、学习点滴,分享一些源代码或者学习资料,欢迎关注~ 效果展示思路Demo代码HTML<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <metaname="viewport"content="width=device-width,initial-scale=1.0
问题描述:几乎每一个人都用乘法表。但是你能在乘法表中快速找到第k小的数字吗?给定高度m、宽度n的一张m*n的乘法表,以及正整数k,你需要返回表中第k小的数字。例1: 输入:m=3,n=3,k=5 输出:3 解释: 乘法表: 123 246 369 第5小的数字是3(1,2,2,3,3). 例2: 输入:m=2,n=3,k=6 输出:6 解释: 乘法表: 123 246 第6小的数字是6(1,2,2,3,4,6). 注意: m和n的范围在[1,30000]之间。 k的范围在[1,m*n]之间。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kth-smallest-number-in-multiplication-table 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。复制解决方案由于m和n范围为3e4,m*n为9e8,因此将所有数字得到排序的算法是不满足要求的。对于该问题假设我们已经知道了一个数记做target,target的上界为m*n,下界为1,只需统计乘法表中不大于target元素的数目
原来地址:https://akomljen.com/kubernetes-api-resources-which-group-and-version-to-use/OverviewKubernetes使用声明式API来使得系统更加的健壮。但是这也意味着如果我们要创建一个对象,我们可以通过CLI或者REST的方式告诉系统我们需要什么,然后系统就会帮我们创建这些对象了。但是在定义想要什么对象的时候,我们还需要定义API的resourcename,group和version。不过这样用户也会感到困惑,原因是用户作为人类是不擅长于去记忆太多规范的。在一个Deloyment的定义中,你会看到apiVersion是apps/v1beta2,但是其他的apiVersion却是apps/v1,那么到底哪个才是正确的呢?我们可以用哪一个?如果检查我们的K8S集群是否支持这些apiVersion?kubectl给出了答案。APIResources我们可以通过命令kubectlapi-resources来获取K8S支持的resource类型。输出被我截断了,你仍然可以通过这个命令来获取所有的resource
(点击上方公众号,可快速关注)1.nginx常用命令启动nginx./sbin/nginx停止nginx./sbin/nginx-sstop./sbin/nginx-squit重载配置./sbin/nginx-sreload(平滑重启)servicenginxreload重载指定配置文件./sbin/nginx-c/usr/local/nginx/conf/nginx.conf查看nginx版本./sbin/nginx-v检查配置文件是否正确./sbin/nginx-t显示帮助信息./sbin/nginx-h2.nginx状态码499:服务端处理时间过长,客户端主动关闭了连接。3.nginx是如何实现高并发的一个主进程,多个工作进程,每个工作进程可以处理多个请求每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。那么,这个处理的worker继续处理其他请求,而一旦上游服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。由于webserver
由于最近实在是太忙了,于是已经好几天没有更新我的公众号了(反正也没几个人关注) 今天小编初步学习了一下XSS漏洞,顺带打通了DVWA平台上的几道XSS漏洞题,本着学习的精神,在此跟大家分享一下这几题的解法,感兴趣的同学就跟着我一起往下看吧。什么是XSS?跨站脚本(Cross-SIteScripting)攻击,首先是由于Web应用程序对用户的输入过滤不足而产生的。攻击者利用这种不足,把恶意的脚本代码(HTML代码/JavaScript脚本)注入到网页中去。最后当用户正常访问这些网站时,就会自动执行网页中携带的恶意代码。造成Cookie资料窃取、会话劫持、钓鱼欺骗等各种攻击。XSS攻击主要分为反射型XSS、存储型XSS,以及DOM型XSS三种。Part.1ReflectedXSS LOW等级注入页面如下,填入用户名处:低安全等级源码如下: 其中,array_key_exists()函数的作用如下:可以看出,以上代码仅仅判断是否有传过来正确的键名,显然存在XSS漏洞。解法:输入<script>alert("xss")</script>顺利出现弹窗:
以下为工作中遇到的,备注一下先需要几个辅助类1#regionGripBounds 2 3usingSystem.Drawing; 4internalstructGripBounds 5{ 6privateconstintGripSize=6; 7privateconstintCornerGripSize=GripSize<<1; 8 9publicGripBounds(RectangleclientRectangle) 10{ 11this.clientRectangle=clientRectangle; 12} 13 14privateRectangleclientRectangle; 15publicRectangleClientRectangle 16{ 17get{returnclientRectangle;} 18//set{clientRectangle=value;} 19} 20 21publicRectangleBottom 22{ 23get 24{ 25Rectanglerect=ClientRectangle; 26rect.Y=rect.Botto
序言很多时候都会焦虑,为什么会焦虑呢,因为变化的太快了?急于看到结果?基于事实去看的话,焦虑可能要少点儿,焦虑的时候多注意观察,慢慢积累沉淀。留恋温柔乡,必是英雄冢,每一件事情总是存在两面性,要擅长取舍。容器层在使用容器的时候,有的时候会发现容器无法启动,有的时候会发现物理磁盘需要清理,所以需要了解容器的文件系统,查看容器使用的文件系统信息如下:大部分的使用的存储驱动都是使用overlay2,使用这种文件系统的好处就是节省inode,而且内存的使用率比较高,多个容器能共用相同的库文件,从而可能出现物理机上大量的内存用于cache和buffer中。 在使用overlay2的时候,总共分为两层结构,一层是镜像层也就是lowerdir,一层是容器层,也就是可读写层,upperdir,由于在运行的时候,会进行挂载,从而又会创建一个层mergerdir,总体的架构图如下: 从上图可以看到对于容器来说,发生变化的文件都是在upperdir之中,而不变的部分都在lowerdir之中。 当容器的磁盘空间满了之后,那么容器是无法启动的,从而需要找到对应的目录,在物理机上直接进行删除文件,也就是删除upp
document.getElementById("test").style.color这种方式获取的只是内联样式,并不能获取内部样式和外部样式,下面为内部样式<divid="test"style="width:600px;height:300px;background-color:pink;"></div>复制<scripttype="text/javascript"> window.onload=function(){ vartest=document.getElementById("test"); vartag=document.getElementById("tag"); console.log(getStyle(test,"width")); functiongetStyle(element,attr){ if(element.currentStyle){ returnelement.currentSt
value,typesandoperatorThereisonlyonevalueinJavaScriptthatisnotequaltoitself,andthatisNaN,whichstandsfor“notanumber”.console.log(NaN==NaN) //→false复制Whensomethingthatdoesn’tmaptoanumberinanobviousway(suchas"five"orundefined)isconvertedtoanumber,thevalueNaNisproduced.FurtherarithmeticoperationsonNaNkeepproducingNaN.Whencomparingvaluesofthesametypeusing==,theoutcomeiseasytopredict:youshouldgettruewhenbothvaluesarethesame,exceptinthecaseofNaN.Butwhenthetypesdiffer,JavaScriptusesacomplicate
2018年4月26日-28日,以“新时代,新安全,新力量”为主题的“西湖论剑•网络安全大会”(以下简称“西湖论剑”)在杭州国际博览中心隆重举行。本届“西湖论剑”,由国家互联网信息办公室网络安全协调局、公安部网络安全保卫局指导,浙江省互联网信息办公室、浙江省公安厅、杭州市人民政府联合主办,杭州市经济和信息化委员会、杭州市萧山区人民政府、杭州安恒信息技术股份有限公司承办。28日上午,网络安全人才分论坛、工业互联网信息安全分论坛、金融安全分论坛、智慧城市安全分论坛、应急响应及威胁情报分论坛、物联网安全体验区、网信圆桌会议、公安闭门会议等8个平行分论坛同时举办,各有侧重地分享新的理念和成果,为不同领域的网络安全问题出谋划策。网络安全人才分论坛: 没有网络安全,就没有国家安全。培养高素质的网络安全人才是建设网络强国的重要路径。28日上午,以“论剑人才寻义方”为主题的网络安全人才分论坛举办,中国信息产业商会信息安全产业分会常务副理事长温哲、教育部高等学校信息安全专业教学指导委员会秘书长封化民等领导及嘉宾莅临现场,围绕新形势下网络安全人才培养话题,交流了网络空间学科建设和网络安全人才培养经验,共商
编者注:《吃豆人》是一款由南梦宫公司制作的街机游戏,游戏最初于1980年5月22日在日本发行。本游戏由南梦宫公司的岩谷彻设计,游戏于1980年10月由MidwayGames公司在美国发行。星际争霸是由暴雪娱乐有限公司制作发行的一系列战争题材科幻游戏。游戏系列主要由ChrisMetzen与JamesPhinney设计开发。游戏的剧情发生在26世纪初期的克普鲁星区——位于遥远的银河系中心,游戏最初于1998年发行。修改蒙特卡洛树搜索让人工智能像人类一样玩视频游戏摘要在本文中,我们实现了人工智能玩家可以像人类一样玩一些视频游戏。为此,我们使用了几种运用蒙特卡洛树搜索的UCT算法,通过选择偏差行为重复当下行动、暂停、限制行动快速转换。另外,我们使用人类玩家的行动轨迹来对重复行为倾向进行建模,这个模型被用来偏差调整UCT算法。实验证明我们的修正的MCTS(蒙特卡洛树搜索)机器人BoT,在重复动作上表现和人类玩家相似。另外,我们通过调查得出人工智能玩家在一些游戏中表现得和人类一样。1.引言与背景当开发一个算法用来玩游戏时,目标通常是让它玩得尽量好。对于许多游戏来说,成功有一个合适且明确的数字标准。
流程图认识流程图流程图是展示过程和步骤的工具,可以借助流程图梳理解决问题的思路。流程图中,不同形状的图框有不同的作用,图框之间要用箭头连接,箭头表现流程的方向,从一个步骤指向下一个步骤。像这样只有一条路径,按照箭头方向一步步向下执行的结构叫做顺序结构。分支结构能够根据判断的不同情况,执行不同的分支,这样的结构叫做分支结构,也叫做选择结构。在流程图中,菱形表示判断。从判断框要引出两个分支,分别处理条件成立和不成立的情况。同级if和if嵌套流程图 两个分支合并在一起,标志着条件判断的结束。 包含多个判断的流程,必须仔细观察判断结束的位置,才能理清正确的逻辑。涉及到数值计算时,要使用到int()命令将输入内容进行转换循环结构循环结构定义一般的,一个条件判断框和从它指出,最后又指回的箭头组成了一个封闭的环,这种结构可以看做是一个循环结构。在一些流程图中,经常会出现从某处开始,按照一定的条件,反复执行某些步骤的情况,这就是循环结构。反复被执行的步骤被称为循环体。循环结构中,在判断框内写上循环成立的条件, 条件成立时指向循环体,然后从循环体回到判断框的入口处; 条件不成立时,跳出循环,执行条件不成
实验环境 实验所处环境位于vs2019环境中 学习内容 一、最基础的参数传入:值参数 对于这种传入,和其他的c,c++编程语言参数传入一样,没有太大差别,在这里给如下例子: 虽然这里并没有进行传参但是还是可以理解值传入的意思,即最简单(基础)的传入。 namespacedate { classDateClass//值传入 { publicintGetdateHour() { DateTimedt=DateTime.Now; returndt.Hour; } publicintGetdateMinute() { DateTimedt=DateTime.Now; returndt.Minute; } } classProgram { staticvoidMain(string[]args) { DateClassDC=newDateClass(); Console.WriteLine("time0:{0}:{1}",DC.GetdateHour(),DC.GetdateMinute()); } } } 复制 二、引用参数 在使用引用参数时:1、必须在声明和
转自https://www.eefocus.com/automobile-electronics/426313 ---------------------------------------------------------------------------------------------------- 数字世界之所以存在,是因为我们可以轻松地创建、交换、存储、检索和操作二进制信息。如果电子产品仍然完全依赖模拟数据,那就不那么先进了;行业还没有创造一种方法来可靠地存储原始形式的模拟数据,至少没有一种能够与数字存储的密度和耐久性相当的方式,而且在未来也不太可能在这个方向上投入太多的精力。虽然这需要将信息在数字和模拟间相互转换,但数字数据的可重复性使得这负担很小。 从根本上讲,数字存储数据所采用的技术具有一个可分解的误差幅度。在半导体中,这通常涉及存储必须在相对较大的窗口内的电荷;电路检测电荷,并且每个逻辑电平的预定义上限和下限内的任何内容都被译为逻辑0或逻辑1。正是由于电荷存储的变化,使得模拟值难以准确存储。 对于可擦除的、非易失性的存储,业界已经在两
一.TableLayout(表格布局)常用属性: android:collapseColumns:设置需要被隐藏的列的序号 android:shrinkColumns:设置允许被收缩的列的列序号 android:stretchColumns:设置运行被拉伸的列的列序号 以上这三个属性的列号都是从0开始算的,比如shrinkColunmns=“2”,对应的是第三列! 可以设置多个,用逗号隔开比如”0,2”,如果是所有列都生效,则用”*”号即可 除了这三个常用属性,还有两个属性,分别就是跳格子以及合并单元格,这和HTML中的Table类似: android:layout_column=”2”:表示的就是跳过第二个,直接显示到第三个格子处,从1开始算的! android:layout_span=”4”:表示**合并**4个单元格,也就说这个组件占4个单元格 二.例子(简单做一个计算器的布局) 1.首先先创建一个TableLayout的XML文件 代码如下: 1<?xmlversion="1.0"encoding="utf-8"?>
本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动MySQL服务接受外部连接,主要是通过Dockerfile和shell脚本实现这一过程。 搭建步骤 1、首先创建Dckerfile: FROMmysql:5.7 #设置免密登录 ENVMYSQL_ALLOW_EMPTY_PASSWORDyes #将所需文件放到容器中 COPYsetup.sh/mysql/setup.sh COPYschema.sql/mysql/schema.sql COPYprivileges.sql/mysql/privileges.sql #设置容器启动时执行的命令 CMD["sh","/mysql/setup.sh"]复制 2、编写容器启动脚本setup.sh: #!/bin/bash set-e #查看mysql服务的状态,方便调试,这条语句可以删除 echo`servicemysqlstatus` echo'1.启动mysql....' #启动mysql servicemysqlstart
转载自: http://tianweishu.com/2015/12/21/Android-studio-debug-tips-you-may-not-know/ 写代码不可避免有Bug,通常情况下除了日志最直接的调试手段就是debug;那么你的调试技术停留在哪一阶段呢?仅仅是下个断点单步执行吗?或者你知道 EvaluateExpression,知道条件断点;可是你听说过日志断点吗,MethodBreakpoint, ExceptionBreakpoint 呢?还有高大上的 FieldWatchpoint ? 几种不同的断点 你有关注过AndroidStudio旁边断点的区别吗?比如上图三个断点有什么不同?且听我一一道来。 调试基础 一般来说我们有两种办法调试一个debuggable的apk;其一是下好断点,然后用debug模式编译安装这个app;其二是 attachprocess,在AndroidStudio里面就是这么一个对话框: AttachProcess 第二种方
最开始接触组合设计模式是在大话设计模式这本书中的案例,讲的是让你设计一个公司的组织架构,一个总公司下有人力资源部门,IT部门,财务部门,还有广州分公司、深圳分公司,在分公司下也有IT部门和财务部门,让你用代码构建出来,然后在自学数据结构关于树型结构的时候,让你用python代码实现一个二叉树,最后第三次是在学习李建忠老师的23种设计模式时,感觉打通了任督二脉,明白组合设计模式本质上是一种树形的数据结构型模式。为什么这么说呢,接下来我们看一下它的官方定义和示例。 组合设计模式GOF官方定义:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 类结构图如下: 首先我们用python代码和组合设计模式来实现一个公司的组织架构。 01、设计节点基类 classDepartment: """ 部门基类 """ def__init__(self,name): self.name=name defdisplay(self): pass cl
修改web.xml 将spring和springMVC配置文件一同加载 <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml,classpath:applicationContext.xml</param-value> </init-param>复制 修改spring配置文件 防止重复扫描controller包 <!--扫描包注解:不需要手动的在xml中进行配置类而通过注解即可spring在扫描包的时候忽略controller层--> <context:component-scanbase-package="com.imust"> <!--exclude不包含--> <context:exclude-filtertype="annotation"expression="org.springframework.stereotype