自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 牛客 - 骚区间(线段树+思维)

题目链接:点击查看题目大意:给出一个 1 ~ n 的排列 a,现在规定骚区间当且仅当 a[ l ] 是 [ l , r ] 这段区间内的次小值,同时 a[ r ] 是 [ l , r ] 这段区间内的次大值,现在问有多少个子区间(连续)是sao的题目分析:一段对两个端点都有约束的区间,在确定下来一个端点后,根据条件不难确定出另一个端点的可行范围但为了确定有多少左右区间可以配对,我们可以利用线段树和扫描线的思想进行维护枚举端点 i 作为左端点时,找到右端点的可行区间 [ l , r ] ,将.

2020-06-29 18:10:11 413

原创 HDU - 6582 Path(最短路+最大流)

题目链接:点击查看题目大意:给出一张 n 个点和 m 条边组成的有向图,现在问让最短路变长的最小花费是多少题目分析:增加最短路的最小花费,我们可以将最短路上的边单独拿出来,再求一下最小割就好了,用了封装后的算法看起来非常舒服,但时间复杂度有点高。。看别人都是100ms左右跑完,我的代码是950ms划过代码:#include<iostream>#include<cstdio>#include<string>#include<ctime&gt.

2020-06-28 22:31:03 335

原创 最短路模板

迪杰斯特拉const int N=1e3+100;//顶点数 const int M=4e3+100;//边数 struct Edge{ int to,w,next;}edge[M];int head[N],d[N],cnt;//链式前向星 bool vis[N];void addedge(int u,int v,int w){ edge[cnt].to=v; edge[cnt].w=w; edge[cnt].next=head[u]; head[u]=cnt++.

2020-06-28 12:28:17 307

原创 HDU - 5920 Ugly Problem(Java大数+贪心)

题目链接:点击查看题目大意:给出一个非常大的数字 n (),现在要求将其拆分为数量不超过50 个的回文串之和题目分析:贪心去分就好了,贪心策略如下,奇偶两种情况:对于奇串 12345:选择前半段 123 将其减一,变为 122 构造回文串 12221 用原数字减去当前回文串然后继续操作对于偶串 123456:选择前半段 123 将其减一,变为 122 构造回文串 122221 用原数字减去当前回文串然后继续操作这样就好了,因为每次选择了前半段,所以每次数字的长度都会减少一半.

2020-06-28 00:04:17 305

原创 HDU - 5919 Sequence II(主席树+思维)

题目链接:点击查看题目大意:给出 n 个

2020-06-27 23:46:24 294

原创 CodeForces - 1373F Network Coverage(二分)

题目链接:点击查看题目大意:给出一个首尾相接的环,每个点的编号分别为 1 ~ n ,其中每个点的需求量记为 a[ i ] ,供应量记为 b[ i ] ,每个点可以用 b[ i ] 向 a[ i ] 和 a[ i + 1 ] 提供需求,现在问是否存在着一种分配方案,使得每个点的需求 a[ i ] 都能得到满足题目分析:题解的 O( n ) 解法表示没看懂,还是说一下从网上看到的二分解法吧假设任意一个点 b[ i ] 向 a[ i ] 或者 a[ i + 1 ] 的供应量确定了的话,那么剩下的 n

2020-06-27 23:17:16 455

原创 CodeForces - 1373E Sum of Digits(贪心)

题目链接:点击查看题目大意:设 f( x ) 为 x 的数位之和,给出一个 n 和一个 k ,求的最小 x ,若不存在,输出 -1题目分析:因为 n 和 k 比较小,所以可以打表,当 k 为 0 的时候,显然是 r + 99...999 是最优的,其中 r = n%9,当 k 为 1 的时候,打表的时间复杂度是 sqrt( 1e16 ) * 8 ,也就是将近 1e9 ,本地可能绷不住,所以可以打到 1e7 左右,然后自己找找规律补齐剩下的几项就好了,剩下的时间复杂度分别就是,之类的了,本地轻轻...

2020-06-27 23:03:42 504

原创 CodeForces - 1373D Maximum Sum on Even Positions(最大连续子段和)

题目链接:点击查看题目大意:给出一个长度为 n 的数列 a ,允许选择一个子串进行翻转,问最后可以得到的,偶数位置的数字之和的最大值是多少题目分析:模拟几次不难发现,我们翻转的长度必须是偶数才能有贡献,如果是奇数的话翻转前后没什么区别的所以我们不妨初始时记录一下偶数位置的数值之和为 sum ,如果对一段长度为偶数的区间进行翻转的话,那么肯定是减去偶数位置的值,加上奇数位置的值作为贡献,换句话说,奇数位置与偶数位置的数值之差便是翻转之后贡献所在,所以我们可以对奇数位置与偶数位置之差求一下最大连续子

2020-06-27 22:49:30 472

原创 HDU - 6598 Harmonious Army(最大流最小割)

题目链接:点击查看题目大意:现在有 n 个士兵,每个士兵有两种职业可以选择,一种是战士,一种是法师,现在有 m 对关系,每对关系 ( x , y ) 的权值如下:如果 x 和 y 同为战士,则收益为 a 如果 x 和 y 同为法师,则收益为 c 如果 x 和 y 职业不同,则收益为 b现在问如何分配职业使得收益之和最大题目分析:因为每个士兵只有两种职业可以选择,所以我们不妨将其视为两个集合,然后与源点和汇点相连求最小割,那么现在的问题是如何确定边权:因为边权涉及到了除以 2 .

2020-06-27 00:54:27 423

原创 洛谷 - P1361 小M的作物(最大流最小割)

题目链接:点击查看题目大意:给出 n 个植物,每个植物种在 A 农场的收益是 a[ i ] ,种在 B 农场的收益是 b[ i ] ,再给出 m 组关系,每组中的所有植物如果都在 A 农场的话额外收益为 c1 ,如果同时在 B 农场的话额外收益为 c2,问如何种植可以使得收益最大题目分析:每种植物的两种选择可以视为两个集合,对于选择农场 A 和农场 B 这个条件我们可以将每个点与源点和汇点连边,求一下最小割就能得到方案了,如果加上下面的那些组合的条件的话,需要我们建立虚点,大概如下图所示其中

2020-06-27 00:30:59 291

原创 洛谷 - P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查(最大流最小割)

题目链接:点击查看题目大意:有 n 个人,每个人都有两种意见,且有许多朋友,需要让朋友之间的意见尽可能统一,问最少有多少冲突题目分析:因为每个人有两种意见,所以分别将其与源点和汇点相连,因为最后可以通过连边从源点到达的点都是位于源点所在的集合,对于汇点同理,所以假设 S -> A ,B -> T,如果 A 和 B 之间存在连边的话,A -> B 的意义是:表示 A 要求 B 与它同立场,反之亦然,如果切断了 S -> A 这条边,表示点 A 选择了集合 T,因此冲突加一,同理

2020-06-26 22:47:17 332

原创 HDU - 6610 Game(带修莫队)

题目链接:点击查看题目大意:给出一个长度为 n 的序列 a,sum 为数列 a 的前缀异或和,再给出 m 次操作,每次操作分为两种类型:1 l r:询问 sum 在区间 [ l , r ] 内有多少对不重复的数 2 pos:交换 a[ pos ] 和 a[ pos + 1 ] 位置的数题目分析:参考博客:https://blog.csdn.net/qq_42576687/article/details/98211361带修莫队模板题,存个板子,对于这个题目而言,转换后的题意如上,因为修改操作

2020-06-25 15:42:28 416

原创 HDU - 6406 Taotao Picks Apples(线段树区间合并)

题目链接:点击查看题目大意:给出一个长度为 n 的数列 a,再给出 m 次询问,每次询问假设如果设置a[ pos ] = val 的话,那么此时序列中的最长上升子序列是多少,此时的上升子序列指的是:若选取 a[ 1 ] 后,找到下一个大于 a[ 1 ] 的位置记为 a[ pos ] ,依次类推题目分析:考察区间合并的一道题目,因为这个题目对于最长上升子序列多加了一点限制,所以处理起来也并不是很复杂,假如现在有左区间和右区间需要合并,我们可以维护一下每个区间的最大值和贡献,不难看出,左区间一定是有贡.

2020-06-25 03:56:22 386

原创 HDU - 5592 ZYBs Premutation(线段树,逆序对)

题目链接:点击查看题目大意:给出 n 个数,分别表示数列 p前缀 [ 1 , i ] 的逆序对个数,现在要求还原数列 p题目分析:设 a[ i ] 为前缀 [ 1 , i ] 的逆序对个数,则 a[ i ] - a[ i - 1 ] 代表的就是 p[ i ] 前面有a[ i ] - a[ i - 1 ] 数比他自己大,换句话说,p[ i ] 就是目前的第 a[ i ] - a[ i - 1 ] + 1 大的数,用线段树倒着维护就好了代码:#include<iostream&g...

2020-06-25 03:02:30 366

原创 HDU - 6602 Longest Subarray(线段树+思维)

题目链接:点击查看题目大意:给出一个长度为 n 的序列,每个数字的范围是 [ 1 , C ] ,现在需要求一个子串,使得字串中的字母,要么出现 0 次,要么出现至少 K 次,问这个子串的最大长度是多少题目分析:第一反应是二分+尺取,但感觉会超时,正解是线段树,枚举 1 ~ n 作为子串的右端点,然后贪心找符合条件的左端点对于任意一个位置 i ,再对于任意一个数字 b 来说,设 pos1 是数字 b 从位置 i 向左开始第一次出现的位置,pos2 是第 k 次出现的位置,pos3 是第 k - 1

2020-06-25 01:57:48 414

原创 HDU - 5316 Magician(线段树区间合并)

题目链接:点击查看题目大意:给出长度为 n 的数列 a ,接下来进行 m 次操作,每次操作分为两种类型:0 l r:询问区间 [ l , r ] 内的最长子序列之和,要求相邻两个位置的下标奇偶性不同 1 pos val:修改 pos 位置的数字为 val题目分析:需要用到区间合并,因为下标奇偶性不同,所以在合并的时候,一共只有四种情况:奇奇,奇偶,偶奇,偶偶,直接分情况维护最大值就好了代码:#include<iostream>#include<cstdio&gt.

2020-06-24 22:10:04 327

原创 HDU - 4902 Nice boat(线段树)

题目链接:点击查看题目大意:给出 n 个数字组成的数列 a ,需要进行 m 次操作,每次操作分为以下两种:1 l r val:将区间 [ l , r] 内的 a[ i ] 都赋值为val 2 l r val:将区间 [ l , r ] 内大于 val 的 a[ i ] 都赋值为 gcd( a[ i ] , val )最后输出整个序列题目分析:因为题目很良心的给了 15 秒,所以可以直接上手写,写一点暴力剪枝就好了,具体剪枝方法如下:每个节点维护一个 mmax 最大值,在执行操作 2 ..

2020-06-24 16:55:32 319

原创 CodeForces - 1369E DeadLee(贪心+拓扑)

题目链接:点击查看题目大意:Lee的厨房中有 n 道菜,每道菜的数量为 w[ i ] ,现在 Lee 会邀请 m 个朋友,每个朋友都有最爱吃的两道菜 x[ i ] 和 y[ i ] ,当朋友 i 来到 Lee 家后,会选择吃掉 x[ i ] 和 y[ i ] 各一份,如果 x[ i ] 没有了的话,那么他只会选择吃掉一份 y[ i ] ,如果 y[ i ] 没有了的话同理,但是如果 x[ i ] 和 y[ i ] 同时没有的话,这个朋友就会吃掉 Lee,问 Lee 能否安排一个合适的顺序以保证存活,输出

2020-06-24 15:57:54 1362

原创 HDU - 6356 Glad You Came(线段树)

题目链接:点击查看题目大意:给出一个长度为 n 初始时全部为 0 的数组 a ,给出一个数据生成器的 X , Y , Z,每次获得 l , r , val 后,执行操作:对区间 [ l , r ] 内的 a[ i ] = max( val , a[ i ] ) ,最后需要输出 a[ i ] * i 的异或和题目分析:对于每次操作我们可以暴力更新,如果是纯暴力的话肯定不行,所以我们可以维护一个 mmin 和 mmax 进行剪枝,具体的剪枝方法如下:如果 val <= mmin ,直接返回就行

2020-06-23 20:39:12 306

原创 HDU - 6315 Naive Operations(线段树+思维)

题目链接:点击查看题目大意:给出一个数列 a 和一个数列 b ,其中数列 a 初始时全部为 0 ,数列 b 初始时是一个 1 ~ n 的排列,接下来共有 m 次操作,每次操作分为两种:add l r :在区间 [ l , r ] 内的 a[ i ] 都加上 1 query l r :查询区间 [ l , r ] 内的所有 之和题目分析:如果直接维护 a[ i ] / b[ i ] 的话可能不太好维护,但是我们可以反向思考,对于数列 b 维护一个线段树,每个节点维护一个 mmin 和一个 sum.

2020-06-23 19:17:12 268 2

原创 HDU - 6601 Keen On Everything But Triangle(主席树)

题目链接:点击查看题目大意:给出一个长度为 n 的数列 a ,再给出 q 次询问,每次询问给出一个区间 [ l , r ] ,要求从区间内选出三个数,使得构成的三角形周长最大,如果无解输出 - 1题目分析:如果将区间 [ l , r ] 内的数列排个序的话,肯定从大到小找连续相邻的三个数是最优的,这样一来,我们必须找到相邻的 x , y , k,满足 a[ x ] + a[ y ] > a[ k ] ,那么我们反过来想,如果不满足条件的话,即恰好有 a[ x] + a[ y ] = a[ k.

2020-06-23 01:45:04 268

原创 HDU - 5820 Lights(主席树)

题目链接:点击查看题目大意:给出一个 n * m 的矩阵,再给出 N 个点,问其中的任意两个点 ( x1 , y1 ) 与 ( x2 , y2 ) 之间,最短路径为 abs( x1 - x2 ) + abs( y1 - y2 ) ,是否存在一条最短路径,使得拐弯的地方都存在着点题目分析:正难则反,我们可以选定一个矩形区域作为非法区域,若非法区域内存在点的话,那么答案显然就是 NO 了这样的话必须要正着扫一遍,再倒着扫一遍,不然没法同时解决以下两个样例:input:21 3.

2020-06-23 00:15:28 295

原创 CodeForces - 1370F2 The Hidden Pair (Hard Version)(交互题+二分)

题目链接:点击查看题目大意:给出一棵无向无根树,事先确定好了两个点 s 和 t ,现在需要通过询问找到这两个点每次询问可以给出一个点集,系统会返回点集中距离点 s 和点 t 距离之和最小的那个点以及其距离,如果有多个符合条件的点,会返回任意一个,比如询问了点集 A = { s1 , s2 , ... , sk } ,则系统会返回一个点 v ∈ A 并且 dist( s , v ) + dist( t , v ) 最小简单版本的是可以询问 14 次,困难版本的是只能询问 11次题目分析:14.

2020-06-22 21:23:48 356

原创 CodeForces - 1370E Binary Subsequence Rotation(思维)

题目链接:点击查看题目大意:给出一个只由 0 或 1 组成的字符串 s ,和一个字符串 t ,问 s 至少需要操作多少次,才能变为 t,每次操作是:可以选择字符串 s 中的一个子序列,使得他们全部向右移动一个单位,如:,选择的子序列为位置,经过操作后 s 就变为了题目分析:很显然的两个结论是,如果字符串 s 和字符串 t 中 1 的数量或者 0 的数量不相等,那么输出 -1 ,还有一点就是,如果字符串 s 和字符串 t 中的某一位置 s[ i ] == t[ i ] ,则这个位置无需操作,可以视为.

2020-06-22 20:59:36 538 1

原创 CodeForces - 1370D Odd-Even Subsequence(二分+思维)

题目链接:点击查看题目大意:给出一个数组a ,现在要求选出一个长度恰好为 k 的子序列 s ,使得的值最小题目分析:当知道了 k 的大小之后,就可以计算出子序列奇数位置和偶数位置各有多少个数了,我们记为 k1 和 k2 ,因为我们要让尽量小,换句话说就是要让里面的两个 max 的其中一个尽量小就可以了,所以奇数列和偶数列实际上是没有任何交集的,这样一来我们可以分开考虑,我们的目标是让最大值最小,这显然是一个二分可以解决的问题,只不过在 check 函数中需要注意几个细节:在遍历数组 a 时,不.

2020-06-22 20:35:31 422

原创 ICPC Pacific Northwest Regional Contest 2016 - Buggy Robot(bfs+dp)

You are trying to program a robot to navigate through a 2-dimensional maze and find the exit.The maze can be represented as a grid with n rows and m columns. Some grid cells have obstaclesthat the robot cannot pass. The other cells are empty, which the .

2020-06-22 01:14:19 310

原创 ICPC Pacific Northwest Regional Contest 2016 - Illumination(2-SAT)

You inherited a haunted house. Its floor plan is an n-by-n square grid with l lamps in fixedlocations and no interior walls. Each lamp can either illuminate its row or its column, but not bothsimultaneously. The illumination of each lamp extends by r squar

2020-06-22 01:08:43 341

原创 ICPC Pacific Northwest Regional Contest 2016 - Maximum Islands(二分图最大独立集)

You are mapping a faraway planet using a satellite.Your satellite has captured an image of the planet’s surface. The photographed section can bemodeled as a grid. Each grid cell is either land, water, or covered by clouds. Clouds mean that thesurface co.

2020-06-21 23:04:40 282

原创 ICPC Pacific Northwest Regional Contest 2016 - Tournament Wins(组合数学求期望)

You are one of 2^k competitors invited to enter a single elimination tournament. You are rankedrth in the published rankings. Furthermore, you know that in any match between two players, theone ranked higher will always win.The only source of uncertaint.

2020-06-21 22:40:55 541

原创 ICPC Pacific Northwest Regional Contest 2016 - Shopping(线段树)

The sale bin of Big Box Bargains contains n products in a row. The ith item has price ai per unit.There is no limit to the quantity of any item.There are q customers who will enter the store to buy items. The ith customer has vi dollars, startsat item l.

2020-06-21 21:02:42 267

原创 ICPC Pacific Northwest Regional Contest 2016 - Paint(线段树+dp)

题目链接:点击查看题目大意:给出 m个闭区间,现在要求选出任意个没有交集的闭区间,使得总的覆盖点数最多,n - ans 是这个题目的答案题目分析:之前网络流做过类似的题目,但是数据太大了,这个题目只能考虑 dp,首先对所有断点离散化,然后对所有的区间以左端点升序排序,dp[ i ] 代表以第 i 段区间为结尾的最大长度,转移方程为 dp[ i ] = max( dp[ i ] , mmax + r - l + 1 ) ,其中 mmax 是前面 i - 1 个 dp 中,区间结尾小于等于 l- 1..

2020-06-21 20:41:02 305

原创 ICPC Pacific Northwest Regional Contest 2016 - Barbells(状态压缩+枚举子集的子集)

Your local gym has n barbells and m plates. In order to prepare a weight for lifting, you mustchoose a single barbell, which has two sides. You then load each side with a (possibly empty) setof plates. For safety reasons, the plates on each side must sum t

2020-06-21 19:54:10 399

原创 山东理工大学第十二届ACM程序设计竞赛 - Cut the tree(树上启发式合并+线段树)

题目链接:点击查看题目大意:给一个具有 N 个节点的有根树,以 1 号节点为根,节点编号从 1 开始,点有点权。树的第 H 层权值为深度为 H 的所有点的点权之和。树的总权值为所有层权值的最大值。问分别割掉以 1,2,..,N 为根的子树后,剩余树的总权值为多少。题目分析:因为题目提示了,弱化数据后支持双 log 的算法。。所以不难想到树上启发式合并+线段树,两个模板套起来就过了,线段树负责处理区间最大值问题,每次更新子树信息的时候,单点更新一下相关层的最大值就好了,记得回溯代码:#i.

2020-06-21 19:33:21 603

原创 山东理工大学第十二届ACM程序设计竞赛 - 猜数字(区间dp)

题目链接:点击查看题目大意:给出一个范围 n ,在其中有一个数字 x ∈ [ 1 , n ] ,你需要猜这个数字,如果猜错了,代价就是猜的这个数字的权值,并会得知是猜大了还是猜小了,问猜到任意一个数字最大的代价之和最小是多少题目分析:一开始以为是二分,结果一直WA,后来zx学长用区间dp秒了之和,才意识到这原来是个dp题。。dp[ l ][ r ] 代表在区间 [ l , r ] 内猜数字的答案,那么最终答案显然就是 dp[ 1 ][ n ] 了,因为如果区间长度为 1 的话,猜一次肯定能猜中,

2020-06-21 19:16:20 585 3

原创 HDU - 5790 Prefix(主席树+字典树)

题目链接:点击查看题目大意:给出 n 个字符串,再给出 m 次询问,每次询问需要输出区间[ l , r ] 内的所有字符串有多少个不同的前缀,要求算法强制在线题目分析:统计字符串的前缀,不难想到借助字典树实现,再将问题简化为在线求区间 [ l , r ] 内不同数字的个数,这就是主席树的基本应用了,两个模板搭配起来就是这个问题的答案了代码:#include<iostream>#include<cstdio>#include<string>#i..

2020-06-20 03:31:17 298

原创 HDU - 4866 Shooting(主席树+扫描线)

题目链接:点击查看题目大意:给出 n 条平行于 x 轴的线段,每条线段都的 [ l , r ] 都位于 [ 1 , X ] 之间,每条线段的高度为 d,也就是距离 x 轴的位置,接下来给出 m 次询问,每次询问给出一个 x 和 k ,问:在点 x 处向上的前 k 个线段的高度之和为多少,如果 k 大于点 x 处的线段总数,那么缺少的线段用最高的线段的高度补上题目分析:因为题目要求了强制在线,所以不能用线段树+离线来完成,区间 [ 1 , X ] 上的每个点可以通过扫描线的思想,将 n 条线段的属性转

2020-06-20 02:07:17 283

原创 CodeForces - 1368F Lamps on a Circle(交互+贪心)

题目链接:点击查看题目大意:给出一个环状的灯泡,标号为 1 ~ n ,初始时全部为熄灭状态,现在两个人开始玩游戏,第一个人可以选择继续游戏,也可以选择结束游戏,继续游戏的话首先选择一个正整数 k ,然后点亮k 个熄灭的灯泡,第二个人可以选择连续的 k 个灯泡将其全部熄灭,如此往复,设 R( n ) 是 n 个灯泡的情况下,经过两人的数轮操作后可以亮着的最大灯泡数,第一个人可以在第二个人操作完后,亮着的灯泡不小于 R( n ) 时结束游戏题目分析:一道需要制定贪心策略的题目,首先需要求出 R( n .

2020-06-20 00:36:09 488

原创 CodeForces - 1368E Ski Accidents(拓扑排序)

题目链接:点击查看题目大意:给出一张 n 个点和 m 条边组成的有向无环图,规定:每个点的出度一定小于等于 2 ,现在要求删除掉至多个点,使得任意一条路径的长度都不大于 1题目分析:主要是这个出度小于等于 2 和 4/7 有点难搞,在看过题解后,可以这样考虑,因为每个点的出度都小于等于 2 ,那么我们不妨令其出度都为 2 ,可以得到一颗完全二叉树:这样的话,一个高度为三的完全二叉树,恰好有 7 个结点,如果我们将第三层的 4 , 5 , 6 , 7 这四个结点都删除掉的话,剩下的结点显然..

2020-06-19 19:46:24 503

原创 CodeForces - 1368D AND, OR and square sum(位运算+贪心)

题目链接:点击查看题目大意:给出 n 个数组成的序列 a ,现在可以进行的操作是,任选两个下标 i 和 j ,满足 i != j ,使得:设 x = a[ i ] , y = a[ j] a[ i ] = x and y a[ j ] = x or y问经过任意次操作后,a[ 1 ] * a[ 1 ] + a[ 2 ] * a[ 2 ] ... + a[ n ] * a[ n ] 的最大值是多少题目分析:首先需要观察出的一个前置性质就是,x + y = ( x or y ) + ( x .

2020-06-19 17:35:23 421

原创 HDU - 5788 Level Up(主席树+dfs序+树状数组)

题目链接:点击查看题目大意:给出一棵有向树,每个节点都有一个初始的权值 a[ i ] ,和一个通过计算得到的权值 mid[ i ] ,mid 数组的计算方法如下:mid[ u ] 为结点 u 及其子树中所有a[ i ] 的中位数,现在问如果可以令其中一个节点的 a[ i ] 变为 1e5,如何选择可以使得所有节点的 mid[ i ] 之和最大题目分析:乍一看题目可能比较复杂,但是一步一步分析下来可能就能找到突破口了首先是子树,对于子树上进行操作,我们可以跑出整棵树的dfs序,这样就将子树上的操.

2020-06-19 01:55:48 310

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除