next

树上染色题解

旧时模样 提交于 2020-12-05 02:01:46
题目描述 有一棵点数为n的树,树边有边权。将m个点染成黑色,并将其他的点染成白色。会获得黑点两两之间的距离和加上白点两两之间的距离和的收益。问收益最大值是多少。 输入输出格式 输入格式: 第一行两个整数n、m。接下来n-1行,每行三个整数a、b、c,表示有一条树边连接a、b,长度为c。 输出格式: 一行 一个正整数,表示收益的最大值。 题解   由题目我们可以考虑动态规划,令f[i][j]表示以i为根节点的子树上有j个结点为黑色可以得到的最大贡献。这就成了一个树上背包问题了。   对于f[i][j]这个状态,除i以外的所有点可以被分为两类,一类是在i 的子树上的,另一类是在i的子树外的。而在这两个集合中各取一个点相连一定会经过边(i, father[i])我们可以算出在此时(i,father[i])产生的收益是(设子树大小为size[i])子树上的黑点个数(j)与子树外的黑点个数(m - j)的乘积乘上这条边的边权(w[i])加上子树上白点的个数(size[i] - j)乘以子树外白点的个数(n - m - size[i] + j)再乘以边权,这些贡献是在加入了根节点以后才产生的新的贡献,与子树上黑白点如何分配无关。   然后,我们再来考虑子树上黑白点的分配方法,由于之前的子树分配对后面的子树如何分配没有影响,我们可以把子树分为两类,一类是已经确定大小的,一类是还没有确定大小的

C# LINQ查询表达式用法对应Lambda表达式

∥☆過路亽.° 提交于 2020-12-05 00:55:23
C#编程语言非常优美,我个人还是非常赞同的。特别是在学习一段时间C#后发现确实在它的语法和美观度来说确实要比其它编程语言强一些(也可能是由于VS编译器的加持)用起来非常舒服,而且对于C#我觉得他最优美之处不仅仅是语法糖方面还有就是体现在LINQ和Lambda表达式。 本篇文简单介绍一下关于C#当中LINQ表达式和其对应的Lambda表达式的用法,关于这两部分内容的相关参考资料: 人民邮电出版社《C#程序设计及应用教程》(第3版) 博客园博客:《 c# Linq查询 》 同时在介绍的时候我会尽量挑出重要部分同时加上我自己的理解和认识,如有偏差还请指教。 首先先让我们看一下什么是LINQ查询表达式和Lambda表达式: 运行结果: 以上是对LINQ查询表达式和Lambda表达式的一个简单的应用,都是查询stu列表中年龄大于等于20岁的结果并且把结果按照年龄降序排列。 由此可见Linq表达式和Lambda表达式并没有什么可比性,只是用Lambda可以实现LINQ的查询语句。 那与Lambda表达式相关的整条语句称作什么呢?在微软并没有给出官方的命名,在《深入理解C#》中称其为“点标记”。 例子中主要以LINQ表达式为主,LINQ表达式结构更为清晰易于理解,同时也会给出对应的点标记写法(所有的LINQ查询表达式都可以转成对应的点标记。反之,不是所有的点标记都可以转成查询表达式。)

PHP 霸主地位被动摇,JIT 是穷途末路后的绝地反击?

会有一股神秘感。 提交于 2020-12-05 00:47:36
原文出自 https://my.oschina.net/editorial-story/blog/1604717 TIOBE 2017 年度编程语言榜单已 出炉 ,世界上最好的语言 PHP 再度无缘年度编程语言。 距离其上次(2004 年)获得年度编程语言,已有 13 年之久。而从历年 TIOBE 编程排行榜趋势图也可以看到,自 2014 年以来,PHP 总体处于持续下滑趋势。 作为世界上最好的语言,PHP 的霸主地位会被撼动吗? 据 W3Techs.com 的数据显示,近年来,有超过 80% 的网站在服务器端的编程语言选择了 PHP,一门语言流行的背后必会有其原因,PHP 一开始凭借其简单上手而流行起来,而持续流行了这么多年,我们相信不仅仅是由于它的易于使用,作为一门服务器端的语言,如果性能没有足够好,很难一直被流行至今。 下面,我们不妨回顾下 PHP 的性能是如何演进的。 PHP 的性能演进历史 PHP 是 Web 开发最常用的语言,自 1994 年 Rasmus Lerdorf 创建 PHP 以来,PHP 语言经历了许多激烈的改进,其中性能是开发人员在评估新版本时考虑的主要标准之一。每个大版本的更新都会带来很多新特性和性能提升。 有关 PHP 性能改进的主要版本历史: 1994:Rasmus Lerdorf 为了维护个人网页而制作了一个简单的用 Perl 语言编写的程序,称为

【BZOJ5210】最大连通子块和 树剖线段树+动态DP

心已入冬 提交于 2020-12-04 19:09:36
【BZOJ5210】最大连通子块和 Description 给出一棵n个点、以1为根的有根树,点有点权。要求支持如下两种操作: M x y:将点x的点权改为y; Q x:求以x为根的子树的最大连通子块和。 其中,一棵子树的最大连通子块和指的是:该子树所有子连通块的点权和中的最大值 (本题中子连通块包括空连通块,点权和为0)。 Input 第一行两个整数n、m,表示树的点数以及操作的数目。 第二行n个整数,第i个整数w_i表示第i个点的点权。 接下来的n-1行,每行两个整数x、y,表示x和y之间有一条边相连。 接下来的m行,每行输入一个操作,含义如题目所述。保证操作为M x y或Q x之一。 1≤n,m≤200000 ,任意时刻 |w_i|≤10^9 。 Output 对于每个Q操作输出一行一个整数,表示询问子树的最大连通子块和。 Sample Input 5 4 3 -2 0 3 -1 1 2 1 3 4 2 2 5 Q 1 M 4 1 Q 1 Q 2 Sample Output 4 3 1 题解 : 首先思路源自WC2018上陈俊锟所说的动态DP。 $O(n^2)$做法: 我们考虑每次询问时都进行一次树形DP。我们令f[x]表示x子树中,包含x的连通块的权值和最大值(可以为空),容易得到DP方程:$f[x]=max(0,v[x]+\sum f[y])$(y是x的儿子)。再维护s

Java中的Set集合

可紊 提交于 2020-12-04 13:44:31
Set接口简介 Set接口和List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,它是比Collection接口更加严格了。与List接口不同的是,Set接口元素无序,并且都会以某种规则保证存入的元素不出现重复。 Set接口主要有两个实现类,分别是HashSet和TreeSet。其中,HashSet根据对象的哈希值来确定元素在集合中的存储位置,因此 具有良好的存取和查找性能 。TreeSet则是以二叉树的方式来存储元素,它可以实现 对集合中的元素进行排序 HashSet集合 HashSet是Set接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的。当向HashSet集合中添加一个对象时,首先会调用该对象的hashCode()方法来计算对象的哈希值,从而确定元素的存储位置。如果此哈希值相同,再调用对象的equals()方法来确保该位置没有重复元素。Set集合与List集合存取元素的方式都一样。 通过一个案例来演示HashSet集合的用法: public class Example01 { public static void main(String[] args) { HashSet set = new HashSet(); set.add( "老大" ); set.add(

Hexo瞎折腾系列(1)

我是研究僧i 提交于 2020-12-04 08:28:44
前言 网上有不少相关的帖子,不过版本会比较旧,而不同版本可能存在代码不同的问题,不过大部分还是大同小异,本系列就不啰嗦重复了,基本只会按照本人所使用的版本以及个人所使用到的内容来进行介绍。 该系列是对我所使用的Next主题进行个性化定制,涉及到js和css等的修改,还有各种插件的使用;另一个系列是针对Next主题进行一些写作技巧的介绍与运用,希望能对大家有所帮助。有疑问的朋友可以给我留言,我会尽可能回复 O(∩_∩)O 。<!-- more --> 我所使用的Hexo和NexT的版本如下: hexo: 3.7.1 next: 5.1.4 关于配置文件 <div class="note info"><p>对于使用了Next主题的Hexo静态博客,存在着两个至关重要的配置文件`_config.yml`。在本系列中,统一将位于站点根目录下的该文件称为`站点配置文件`,将位于`themes\next`目录下的该文件称为`主题配置文件`。</p></div> 准备工作:添加美化博客的相关文件 本系列会使用到大量的css与JavaScript的相关内容,为了更有效率与可观赏性的美化博客,我们将这些美化相关的东西都尽可能地写到一类文件中,方便日后查询与修改。譬如下边的几个文件里,就存放了博客的大部分美化内容: themes/next/source/css/_custom/custom.styl

Handler sync barrier(同步屏障)

纵然是瞬间 提交于 2020-12-04 07:23:35
Handler中的Message可以分为两类:同步消息、异步消息。消息类型可以通过以下函数得知 //Message.java public boolean isAsynchronous() { return (flags & FLAG_ASYNCHRONOUS) != 0; } 一般情况下这两种消息的处理方式没什么区别,只有在设置了同步屏障时才会出现差异。 1 什么是同步屏障 同步屏障可以通过MessageQueue.postSyncBarrier函数来设置 /** * * @hide */ public int postSyncBarrier() { return postSyncBarrier(SystemClock.uptimeMillis()); } private int postSyncBarrier(long when) { synchronized (this) { final int token = mNextBarrierToken++; //1、屏障消息和普通消息的区别是屏障消息没有tartget。 final Message msg = Message.obtain(); msg.markInUse(); msg.when = when; msg.arg1 = token; Message prev = null; Message p = mMessages

算法系列教程05

被刻印的时光 ゝ 提交于 2020-12-04 07:15:47
阅读本文大概需要 7 分钟。 线性表是数据结构最最基本的一个概念,可是你真的了解线性表吗? 线性表的存储方式是什么?栈和队列是线性表吗? 如果能正确地回答这两个问题,那么你就不用浪费时间看本文的内容了。否则,不管你觉得线性表是多么基础的东西都还是花几分钟把本文看完吧。 本系列教程的接下来几篇文章都是讲数据结构的 基础 ,有人已经学过并掌握了,也有人没学过或者早已忘记了。不管怎么样,就当是复习一下吧。对于还没有系统学过数据结构的同学,正好可以用碎片时间快速系统地学习一下。本系列教程关于数据结构的知识不会讲每种数据结构的代码实现,因为几乎所有语言都内置实现好了。 基本概念 在本文开始之前,我们先了解一下线性表、顺序表和链表这三个基本概念: 线性表 (Linear List):线性表是最基础、最简单、最常用的一种基本数据结构。线性表存储的每个数据称为一个元素。一个线性表是 n 个具有相同特性的元素的有限序列。线性表有两种存储方式:顺序存储方式和链式存储方式。 顺序表 (Sequence List):顺序表就是线性表的顺序存储方式,以数组的形式保存。数组的顺序存储方式使得逻辑上相邻的元素,其在物理存储单元中也是相邻的。并且数组是静态分配的,即在使用数组之前需要分配固定大小的空间。可以通过索引直接得到数组中的元素,即获取数组中元素的时间复杂度为 O(1)。 链表 (Linked List)

Python——输入输出及while循环

依然范特西╮ 提交于 2020-12-04 01:56:50
1 # #用户的输入输出和while循环 2 name=input( ' 输入你的名字: ' ) 3 name+= ' 先生 ' # #字符串拼接 4 print ( ' \n\n很高兴认识你! ' + name) 5 age=int(input(name+ ' 请输入年龄: ' )) 6 if age>=17 and age<28 : 7 print ( ' \n ' +name+ ' 要记得主席的话:“只争朝夕,不负韶华!” ' ) 8 if age>=28 : 9 print (name+ ' 天地广大,记得做喜欢的事! ' ) 10 # #求模运算 11 print ( ' \n---------------------------分割线---------------------------- ' ) 12 print ( ' ------判断数字奇偶----------- ' ) 13 flag=int(input( ' 输入数字: ' )) 14 15 if flag%2== 0: 16 print (str(flag)+ ' 是偶数! ' ) 17 else : 18 print (str(flag)+ ' 是奇数! ' ) 19 20 # #while 循环简介 21 ''' 22 for 循环用于针对集合中的每个元素都一个代码块,而 while 循环不断地运行

codeforces 983A Finite or not?判断进制有限表示

和自甴很熟 提交于 2020-12-04 01:51:25
http://codeforces.com/problemset/problem/983/A 给你一个分子p,一个分母q,一个进制base:b。问b进制下,该分数是不是有限小数。 You are given several queries. Each query consists of three integers p p, q q and b b. You need to answer whether the result of p / q p/q in notation with base b b is a finite fraction. A fraction in notation with base b b is finite if it contains finite number of numerals after the decimal point. It is also possible that a fraction has zero numerals after the decimal point. Input The first line contains a single integer n ( 1 ≤ n≤105) — the number of queries. Next n n lines contain queries, one per line.