2/13考试总结

news/2024/7/20 21:36:50 标签: 深度优先, 算法

时间安排

7:30–7:50 看题,T1数据结构,T2dp,T3 dp 。
7:50–8:30 T1,考虑询问可分为两部分,向上和向下,向上部分可以倍增,考虑向下怎么做,考虑能不能直接离线维护倍增,发现不太好做。
8:30–10:00 T3,可以求出通项公式,那么问题变成对于一个关于链长的函数 f(len) 求和。想了一会发现可以点分治做。写完发现常数比较大。
10:00–11:00 T2,暴力。对于 m=1 答案唯一。考虑怎么 dp 。发现假设一个数字串后,不太会求其最大匹配数,假设原串删除了一个位置,不太会求其可以作为最大匹配的数字串,而且即使求出来也面临一个去重的问题。
11:00–12:00 T1,发现一个瓶颈在于从上到下时不止有一条链,难以维护倍增,突然想到可以链剖分,对每条链预处理倍增数组,不过这样要处理很多信息,写完发现常数巨大,没调出来。

回顾反思

T1:
一道人均 AC 题,我只拿了 3 分。
对于部分分,我在想到链上的倍增做法后没能立马想到链剖分,说明我对链剖分作用和性质不够熟悉。重、长链剖分可将树剖成链,于是任何链上的做法都可以此套到树上,注意不同链中间的转移就行了。
对于正解,发现这个颜色的转化可以用类似链表的关系维护,进一步的可以用并查集维护。比赛时有类似的想法,不过当时更倾向于将当前链上所有点的转化关系处理出来,而题解则是直接把询问看做虚点,原树的点看做转移,于是更加简洁可做。
另外一点是,这道题我其实写了 13 分,但是由于题目本身预处理开了一个倍增,部分分又开了一个倍增,加上本身数据范围比较大,于是直接 MLE 了,而整场比赛我没注意到这点,这是不应该的。

T2:
可惜的是没有拿到基础的 dp 分数。
比赛的时候一直纠结于得到了一个 A 如何得 B ,或者得到一个 B 如何求 A ,觉得很不可做于是就没有往下想了。但是实际上,暴力设状态 dpi,j,k 表示当前考虑到 i ,答案为 j ,最优答案为 k ,的方案数,按位对 A 和 B 相应位置的数的相同关系分讨,其贡献的改变是可知的。于是就可做了。进一步的,发现转移几乎只影响 k-j ,不需要知道 j,k 具体多少,于是可以改变状态 dpi,d ,令 d=k-j 就变为 n^2 了。

T3:
比较好的一点是,利用通项公式转移为了一个简单的树上路径问题;
不好的一点是,没有注意到这个式子本身的特殊性,机械套用点分治的一般方法,常数还写大了,导致 T 了一档分数。
仔细观察就可发现,套用的点分治压根没有用到点分治的任何性质,完全可以在普通的原树上 dfs 一遍求得答案。
遇到问题还是要多想想有什么特殊性,不要遇到经典的模型就套用。
另外,关于减小常数的问题:当 n 比较大时,链式前向星存边比 vector 快很多;对于点分治,学习一下常数较小的写法。

T1是签到题,T3在知道通项公式后也很容易,T2 dp 设准状态后推导和优化也比较简单,T1,T3的AC和T2普通 dp 的60+高分都不算太难。理想分数是 260+


http://www.niftyadmin.cn/n/64027.html

相关文章

力扣(LeetCode)411. 最短独占单词缩写(2023.02.13)

通过将任意数量的 不相邻 子字符串替换为它们的长度,可以完成对字符串的 缩写 。 例如,像 “substitution” 这样的字符串可以缩写为(但不限于): “s10n” (“s ubstitutio n”) “sub4u4” (“sub stit u tion”) “…

7、MyBatis框架——MyBatis对一对一关系的处理、分步查询、MyBatis对一对多关系的处理

目录 一、项目框架搭建 二、在实体类中添加额外属性实现多表查询 1、mybatis两表关联查询 (1)实体类类型映射规则 (2)代码演示 2、分步查询 (1)autoMapping开启自动映射 (2)…

MATLAB算法实战应用案例精讲-【图像处理】数字图像灰度化(附Java、python、matlab和opencv代码实现)

目录 前言 几个相关概念 1、RGB 2、ARGB 3、灰度化 4.图像点运算 5.线性点运算

【docker知识】DockerFile语法 1:注释指令、解释器指令

一、说明 在docker的指令下工作,似乎很简单,然而,对于复杂工程,这些初级知识是不够的。正确使用DockerFile构建镜像是必须的技能。我们这里假定您已经熟练docker的指令,我们继续上升一个台阶,如何用build和…

2023秋招携程SRE算法岗面试经验分享

本专栏分享 计算机小伙伴秋招春招找工作的面试经验和面试的详情知识点 专栏首页:秋招算法类面经分享 主要分享计算机算法类在面试互联网公司时候一些真实的经验 面试code学习参考请看:

JavaScript 数字是什么?

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注! 作者|慕课网精英讲师 然冬 基于 IEEE 754 标准的双精度 64 位二进制格式的值(-(253 -1) 到 253 -1)。——MDN 在 JavaScript 只有浮…

openGauss数据库源码解析系列文章——备份恢复机制:openGauss增量备份技术(上)

上篇图文,我们分享了备份恢复机制—openGauss全量备份技术的精彩内容,本篇将详细介绍备份恢复机制—openGauss增量备份技术的相关内容。 10.2 openGauss增量备份技术 全量备份每次备份都需要复制全部数据库的文件,备份时间和存储空间的开销…

【C++】关键字、命名空间、输入和输出、缺省参数、函数重载

C关键字(C98)命名空间产生背景命名空间定义命名空间使用输入&输出缺省参数什么叫缺省参数缺省参数分类函数重载函数重载概念C支持函数重载的原理--名字修饰C关键字(C98) C总计63个关键字,C语言32个关键字。 下面我们先看一下C有多少关键字,不对关键…