首页 > 其他分享 >一些题目

一些题目

时间:2023-11-01 09:05:15浏览次数:28  
标签:... le 题目 贡献 子树 序列 一些 最长

昨天duel了好多题,记一下。

Hanging Hearts

这题一看很复杂,又是树形结构,我们考虑用树形DP解决。

那么就只用考虑当前子树的关系了。

要让最长不下降子序列长度最大,我们先想想什么情况会让最长不下降子序列长度变大。

那就是\(f_i\)可以从\(f_j,j<i,a_j \le a_i\) 的地方转移过来。

这个时候题目中的操作3不禁让人联想到树剖、倍增LCA、……中的swap操作,它们都是保证了形如\(x \le y, x \ge y\)的关系式。

看起来和\(a_j \le a_i\)就很有关系。

具体来看,操作3使得\(w_{p_x} \le w_x\)。

又因为每次只是选择叶子,所以\(p_x\)必然在\(x\)后面被选择,也就是说,在\(s\)中,\(w_{p_x}\)出现在\(w_x\)的后面。

那其实\(w_{p_x}\)就对应了\(a_i\),而\(w_x\)就对应了\(a_j\)(这只是感性猜想)。


树形DP的有一个方法,就是先考虑序列问题,然后将序列问题中讨论最后一个点的部分替换为讨论根节点

最长不下降子序列问题中,讨论的是以最后一个数结尾的子序列

这就启发我们讨论根是否在子序列中

假如根不在子序列中,因为权值可以随意分配,一个直观的想法是可以把所有子树的贡献累加起来。

设\(f_u\)是\(T_u\)中的最长不下降子序列的最大长度。

这是一个上界,也就是\(f_u \le sum\)。假设\(f_u > sum\),就必然存在一个子树 \(T_v\),它的贡献比 \(f_v\) 还要多,这就矛盾了。

然后我们发现只要依次从小到大赋值子树然后依次选取,就可以达到这个上界。

所以这就是这种情况的答案。

假如根在子序列中。

由于上面\(w_{p_x} \le w_x\)的性质,根要接在子树中某个点的后面,构成一个更长的子序列,就必须有\(w_u \ge w_k\)。

放缩一下\(w_u \le w_v \le ... \le w_k\)。所以\(w_u = w_v = ... = w_k\)。所以可以把它到根的链上的点加入贡献。

然后你发现,只有操作3能够使得这个连等式成立,而操作3的条件就是父亲大于儿子,所以我们让根在最长链上权值从大到小依次赋值(让根的值大于该链上的所有值)就可以有链长的贡献。

模拟一下会发现,貌似不可能有两条链同时有贡献。

假设有两条链都有贡献,\(i,j\)分别为它们深度最大的点,因为\(u\)一定在子序列中,所以\(w_u=...=w_i\),\(w_u=...=w_j\)。

因为\(i,j\)是深度最大的点,也就是\(w_i=a_i,w_j=a_j\)(否则它们是从自己儿子交换来的,儿子深度更大,矛盾)。

\(a_i=a_j\),矛盾。

然后答案就是最长链的长度。

标签:...,le,题目,贡献,子树,序列,一些,最长
From: https://www.cnblogs.com/zhangchenxin/p/17802222.html

相关文章

  • 非受控组件的一些点
    react不是万能的,做的越多万万不能1、既然非受控,就要受控,完全控制,能画就能删,能赋值就能清空,能建立就能销毁,手动伴随着生命周期2、哪些是非受控的场景或者具备非受控场景特征的场景1、setinterval、settimeout2、redux里面的数据缓存3、refs引用的组件,取决于你是否正确使用ref......
  • 关于Android桌面小组件相关的开发,涉及到的一些点
    你可能用过一些AndroidAPP的小组件,比如:支付宝的小组件:之前疫情期间添加了对应小组件卡片在桌面,可点击小卡片上的查看健康码的按钮,可一键打开健康码。音乐类APP的小组件:添加对应对应小组件后,可在APP的主屏幕中轻松看到当前播放歌曲的相关信息:歌曲封面、歌曲名、歌手名称、所......
  • 想回忆小时候的一些故事。
    小学时很喜欢吃烤面筋。当时学校门口经常有人推车卖。面筋是一圈一圈卷在竹签上面的,白色的,和现在学校里卖的夜宵不一样,学校里的面筋是直接放小塑料碗里面的,并且是黄色。很喜欢刷糖醋,很怀恋记忆里的味道。现在高中了,过了5年多没吃了,回老家时发现学校门口的摊子还在,面筋是一圈......
  • oracle数据库表的一些基本处理
    oracle数据库的简单使用语法用户的数据实际上是存在数据库的表中,所以当我们要向数据库中存放数据时,必须先创建表。/*创建语法createtable[<模式名>.]<表名>(<字段1><类型>[约束条件],<字段2><类型>[约束条件],…)[tablespace<命名空间>];*/–创建一个班级信息表......
  • 关于 vue 虚拟dom 的渲染机制的一些思考
    1.虚拟dom的渲染过程2.vue3中nexttick的作用 1.虚拟dom的渲染机制我们在template中写的div和其他的标签。不会被vue当作是最终渲染的dom,vue会将我们写入的标签转化为对象,通过diff算法,将其构造成一个虚拟树每个树都有一个对应的key,这个key作为不同阶段的标......
  • 差分思想的一些运用
    差分差分的基本模型是:若有一数组\(a[~]=\{1,1,4,5,1,4\}\),定义差分数组\(d[~],~d_i=a_i-a_{i-1}~(i\in[1,n])\).则\(d[~]=\{1,0,3,1,-4,3\}\).现在要对它进行在线区间修改,假设有一次修改为在\([2,4]\)上每一位+1,那么修改后\(a[~]=\{1,2,5,6,1,4\}\).而差......
  • CSPRO 历届题目与题解
    官方题目链接:http://118.190.20.162/\(\Huge目录\)201609201612201709202104202109202112202203202206202209202303202305202309\(\Huge\text{CSP201609}\)火车购票问题描述请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。假设一节车厢......
  • 除了注意力机制,以下是一些可以集成到LSTM模型中的其他模块:
    我明白了,你说的是将模块集成到LSTM中以预测土壤湿度。除了注意力机制,以下是一些可以集成到LSTM模型中的其他模块:卷积神经网络(CNN):在LSTM之前添加卷积层,用于提取土壤湿度数据中的时空特征。卷积-递归神经网络(ConvLSTM):ConvLSTM结合了卷积和循环结构,适用于处理时空序列数......
  • 题目四
    1,编写一个程序,创建一个包含26个元素的数组,并在其中存储26个小写字母。然后打印数组的所有的字母2,使用嵌套循环,按下面的格式打印字母:SSTSTRUSTRUGSTRUGGLSTRUGGLE分别编写一条语句,完成下面a.将变量x的值增加20b.将变量x的值增加1c.将a与b之和的两倍赋给cd.将a与b的两倍之和赋给c3,编写......
  • Markdown 常用的一些语法
    介绍Markdown是一种轻量级的标记语言,以.md结尾。Markdown是做笔记、为网站创建内容以及生成可打印文档的快速、简便的方法常用的Markdown文档工具:Atom/Vscodevim/SublimeText/Notepad++一些编程工具也可以写md文档,如PyCharm,IDEA常用语法斜体:斜体--快捷键ct......