首页 > 其他分享 >7.24 之后的考试总结

7.24 之后的考试总结

时间:2024-07-25 15:18:21浏览次数:8  
标签:总结 子树 7.24 复杂度 枚举 异或 Delta 考虑 考试

7.24

\(100+100+100+0=300\)。

整体:前三题发挥稳定,最后一题确实超出了我的知识范围,但是较为简单的 30 pts 没有细想,比较可惜。

T1:

两个 0-1 串,每次选中两个串上的两个等长(位置不一定相等)区间,询问两个区间不相等的位置数量,对 \(2\) 取模

Solution:考虑对 2 取模经典问题模型,这类问题有一些有趣的解决方案:

第一个是考虑异或操作,因为异或就是模 \(2\) 意义下的加法,而且有较多性质。

第二个是考虑消掉一些重复(或者可以一一对应)的项来达到正确的复杂度,具体说根据实际情况考虑分治,meet-in-the-middle 等算法。

回到本题中,本题较简单,因为发现两数不同就意味着异或为 \(1\),有奇数个也意味着不同数量的异或为 \(1\),考虑异或的结合律,则答案就是把选中部分全部异或。

维护前缀和即可。

T2:

在 \((n+1)\times (m+1)\) 的点阵图中选中 \(k\) 个点,满足:

  1. 它们在一条直线上;

  2. 相邻两点距离不小于 \(d\)。

求满足条件的方案数。

多测,\(n,m,d\le 500,k\le 50,T\le 20\)。

Solution:枚举数数题。

考虑枚举左下端点和右上端点,则此时方案数较为好计算,考虑使用插板法,并预处理组合数,复杂度 \(n^2m^2T\) 真美丽。

但是发现其实枚举端点是没啥意义的,因为答案只和 \(\Delta x,\Delta y\) 有关。

考虑枚举 \(\Delta x,\Delta y\) 并计算每一个的贡献次数,复杂度回到 \(nmT\)。

T3:

给定一棵以 \(1\) 为根的有根树,你可以任选起点,每次向某个祖先或者子树内某个点跳,但是不能重复经过已经去过的点,问最多能走过多少个点。

Solution:

考虑二叉树,发现中序遍历挺对的,难道一定有解全覆盖?

并不是。菊花图就不是。

但是我们发现答案形如:解决一个子树,回到一个祖先,解决另一个子树并把没解决的部分挂上去。

选那两个子树呢?肯定是最大的两个,故每次操作形如吸收所有子树的答案并取最大的两个合并再加 \(1\)。

于是使用 set 启发式合并以获得 \(O(n\log ^2 n)\) 的复杂度。

标签:总结,子树,7.24,复杂度,枚举,异或,Delta,考虑,考试
From: https://www.cnblogs.com/FunStrawberry/p/18321833

相关文章

  • C语言【面试】常用知识点总结之常用易错易混点解析
    第二部分:程序代码评价或者找错有符号整型和无符号整型混合运算时,有符号型自动转换成无符号型,运算的结果是无符号的。如果参与运算的数据类型不同,会自动转化为同一类再运算,这就是自动转换自动转换的规则如下:1.当参与运算的数据的类型不同时,编译系统会自动先将他们转换成......
  • Makefile知识点总结(Linux下开发Risc-V单片机实例)
    Makefile会不会写makefile,从一个侧面决定一个人是否具备完成大型工程的能力。Makefile和make命令一起配合使用,为什么要使用makefile,原因以及优点在下文解释。简单辨析一下建立工程的三种方式Makefile使用非常广泛,通用性强,可跨平台但是语法比较严格,写一个通用,便于管理......
  • 0基础成功转行网络安全工程师,年薪30W+,经验总结都在这(建议收藏)
    我曾经是一名普通的销售人员,工作了三年,每天重复着相同的工作内容,感觉自己的职业生涯停滞不前,毫无发展前景。我开始思考,如何才能让自己的职业生涯更有意义,更具有挑战性。经过一番调研,我决定转行网络安全工程师。工作了越久,越觉得当初转行网络安全的决定还是非常正确的。目......
  • Linux常用命令总结
    基础命令文件管理命令cata.txt#显示文本文件的内容cat-na.txt#显示文本文件的内容(并显示行号)cat-Aa.txt#显示文本文件的内容(含不可见字符)head/tail-na.txt#查看指定文件的头部/尾部内容less/more-na.txt#以分页方式查看长文件od-xa.txt#以十六进......
  • JAVA集合 day7.24
    一.Collections类1.1Collections常用功能常用方法:publicstaticvoidshuffle(List<?>list):打乱集合顺序。publicstaticvoidsort(Listlist):将集合中元素按照默认规则排序。publicstaticvoidsort(Listlist,Comparator<?superT>com):将集合中元素......
  • Transformer详解总结
    Transformer是一种由Vaswani等人于2017年提出的神经网络架构,专门用于处理序列数据,尤其在自然语言处理(NLP)任务中表现出色。Transformer与传统的循环神经网络(RNN)和长短期记忆网络(LSTM)不同,完全基于注意力机制,避免了序列处理中的长距离依赖问题。Transformer的原理Transformer架......
  • 设计模式总结:适配器、桥接、组合和迭代器模式
    在之前的对话中,我们讨论了五种常见的Java设计模式:单例、工厂、策略、装饰器和观察者模式。现在,让我们继续探索其他四种设计模式:适配器、桥接、组合和迭代器模式。适配器模式概念:适配器模式是一种结构型设计模式,用于将一个类的接口转换为另一个类期望的接口。适配器模式......
  • JVM个人详细笔记总结
    jvm概念和运行过程jvm是java的虚拟机位于操作系统层之上,应用程序层之下,所以才具有跨平台能力,JAVA文件需要通过JVM转译成字节码或通过javac命令编译为.class文件后才能运行JAVA程序,运行时必须要有JRE(运行环境),JDK是开发包,其中包含有JRE。jvm组成JVM结构主要分为三个部分:类......
  • HASC 2024 游记 & 总结
    HASC2024游记&总结Day-2~-1请了刚毕业的学长来扫盲,强度很高,从线性代数到离线分治,涉及知识点很广,但都是过基础,感觉还不错,作业也都写的差不多,但是整体二分老师过了两遍还是没怎么懂qaq,想着集训再补吧。Day0集训报到!当天还下了大雨,走路走到学校的,几乎是刚到学校就开始下......
  • vue大小写总结
    1.组件组件的定义有两种命名方式:PascalCase  和   kebab-casePascalCase 定义的组件的引用:PascalCase  和   kebab-case  均可//PascalCase定义方式Vue.component('MyComponentName',{/*...*/})//引用方式一<my-component-name/>//引用方......