首页 > 其他分享 >如何统计子树内控制深度的权值和 && ZLOJ 练习73 C 谈笑风生 & ZLOJ 练习17 B 王子 の合并总结

如何统计子树内控制深度的权值和 && ZLOJ 练习73 C 谈笑风生 & ZLOJ 练习17 B 王子 の合并总结

时间:2022-08-25 10:46:15浏览次数:56  
标签:遍历 谈笑风生 子树内 练习 离线 ZLOJ 权值

written on 2022-08-23

两道题好像是一模一样的类型,特此总结缅怀我逝去的 70 分,,

谈笑风生:

王子:

数据范围均在 \(10^5\) 级别

王子那题给的更明显一点,就是控制深度,求一棵子树内某一些层数的节点权值之和思考在线做法,无果。 不妨考虑离线,这样可以有效地规避可能出现的爆空间问题。

之前有做过类似的树上题目,然后这里的话我们也考虑开一个桶,但是这里的话,实际上我们的想法是要用子树和减去第 \(dep+h+1\) 层的和,由于空间问题,这里的 \(\text{trick}\) 是在遍历子树之前加上 \(val_{dep+h+1}\),遍历完后减去 \(val_{dep+h+1}\)(这里的 \(val\) 表示某一层的权值和),这样的话就把子树内的那一层给减掉了!

然后谈笑风生这道题还需要分类讨论,这是树上问题中一种常见并且有时必要的方法,然后要思考离线!树上问题好多,如果不是树形dp,也都是离线来解决的。

总结:在做树上问题时,可以多往离线的方向考虑,辅以必要的分类讨论。具体到这两题,如果要统计子树内控制深度的权值和,我们可以开一个桶,遍历子树前和遍历子树后加减贡献来计算。

特别注意,开一个桶,遍历子树前和遍历子树后加减贡献的方法非常重要!因为这是人类变通智慧的结晶

标签:遍历,谈笑风生,子树内,练习,离线,ZLOJ,权值
From: https://www.cnblogs.com/Freshair-qprt/p/16623456.html

相关文章

  • ZLOJ 练习73 E k倍数字
    writtenon2022-08-23数位dp好题。数据范围较大,一开始打表找规律,然而失败了。后来比赛的时候就放掉了这题,现在想想,那个时候看到较大的数据范围还是应该考虑使用数位dp......
  • ZLOJ 练习74 总结
    writtenon2022-08-17打得还可以虽然又是倒一hh前三题中第一题贪心稍微注意一下,想了一段时间还算可以。可以看一下第四题。这题最大的启示就是:要求的东西只关注最后的......
  • Java中字节流的总结及代码练习
    Java中的字节流在描述字节流时,先知道什么是流流可以分为:输入流和输出流输入流和输出流示意图:字节流读取内容:二进制,音频,视频优缺点:可以保证视频音频无损,效率低,没有缓......
  • Java基础练习题-错题集(三)
    (1)我们在程序中经常使用“System.out.println()”来输出信息,语句中的System是包名,out是类名,println是方法名。选项:A. 对B.错 (2)以下哪些继承自 Collection 接口()选......
  • 练习正则中,最难以理解的?
    贪婪模式(默认)非贪婪模式?:不使用?:的情况下:达到同样的效果,但代码更精简: ?=只是把:换成了=,但捕获的结果里已经不包含括号中的样式:?!继续把=换成了!,......
  • 手机类练习题
    手机类练习题案例:DemoPhone1类://成员变量Stringbrand;//品牌intprice;//价格Stringcolor;//颜色//成员方法publicvoidcall(Stringwho){System.out.println("......
  • 2022河南萌新联赛第(七)场:南阳理工学院ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛牛客
    2022河南萌新联赛第(七)场:南阳理工学院ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛牛客竞赛OJ(nowcoder.com)1.B-龍_2022河南萌新联赛第(七)场:南阳理工学院(nowcoder.com)......
  • Java基础练习题目
    2.基础练习2.1减肥计划if版本【应用】2.1.1案例需求​ 输入星期数,显示今天的减肥活动​周一:跑步​周二:游泳​周三:慢走​......
  • Redis基础练习题-错题集(一)
    (1)下面关于Redis中set数据类型与list数据类型的比较,正确的说法是()选项A. set中的数据具有唯一性,list中的数据不具有唯一性B. set中的数据有序,list中的数据无序......
  • Java基础练习题-错题集(一)
    (1)下面代码输出结果是?classC{C(){System.out.print("C");}}classA{Cc=newC();A(){this("A");System.o......