首页 > 其他分享 >【笔记】IOI2022

【笔记】IOI2022

时间:2022-08-16 13:14:58浏览次数:102  
标签:le 可以 mid 笔记 IOI2022 ge 我们

「IOI2022」鲶⻥塘

签到题。

如果我们记 \(a_i\) 表示第 \(i\) 列的高度,那么一定不存在 \(a_i\ge a_{i +1}\le a_{i+ 2}(a_{i+1} \neq 0)\) 的情况,假设存在,我们将 \(a_{i + 1}\leftarrow 0\) 答案不会更劣。同理如果 \(a_i\le a_{i + 1} \ge a_{i + 2}\),我们就将 \(a_{i + 1}\) 取到最大值。

对于对于每个非 \(0\) 段都是单峰的,这样我们就可以简单 DP,\(f/g\) 表示到了哪一个,现在是增还是减的最优值。

此时复杂度还是 \(\mathcal{O}(N^2)\),注意到对于每一列一定是修到顶或者修到某个鱼前面停止,所以状态可以优化到 \(\mathcal{O}(M)\),剩下的直接DP 就行。

「IOI2022」囚徒挑战

非常有意思的交互题。

我们比大小,直接二进制拆分从高位到低位比较,优化一下顺序即可做到 \(2\log n = 26\),同时三进制拆分可以做到 \(3\log_3 n = 24\)。由于题目保证两个数不相同,二进制拆分做法的最后两次是不需要比较的,也可以做到 \(24\) 次。

后面的方法是我没想到的,我们可以同时混用二进制和三进制。相当于每次将 \(n\) 等分成 \(k\) 份,然后递归下去。这样我们可以列出 DP 方程,\(f_n = \min\{k + f_{n/k}\}\),同时如果这个人看到的数是 \(1\) 或者是 \(n\) 可以直接结束,所以是 \(f_n = \min\{k + f_{(n - 2)/k}\}\),卡卡常就能过去了。

「IOI2022」⽆线电信号塔

前 \(4\) 个子任务非常简单。其余待补。

「IOI2022」数字电路

这题竟然是 IOI2022 通过人数最多的题,不过我愣是瞪了两个小时没想出来。

这题的关键在于组合意义,对于一个阈值门,如果它有 \(k\) 个儿子是 \(1\),那么它就有 \(k\) 种取值,组合意义是对于每个为 \(1\) 的阙值门,选则一个为 \(1\) 的儿子与之配对。

那么我们就可以直接算贡献了,相当于固定一条从叶子到根的路径,路径之外随便填即可。这样每个输入门之间独立,简单 DFS 可以求出每个叶子对根的贡献,然后线段树维护区间操作即可。

「IOI2022」最罕见的昆虫

个人认为这是最简单的一题。

我们将所有数扫一遍,始终保持最大出现次数为 \(1\),这样可以得到颜色数 \(c\)。

由于我们询问得到最大值,要求最小值,显然是二分。我们二分 \(mid = \left\lfloor\frac{n}{k}\right\rfloor / 2\),将所有数扫一遍,始终保持最大出现次数 \(\le mid\)。最后如果在机器里的数 \(=mid\times c\),说明 \(ans \ge mid\),否则 \(ans < mid\)。

如果 \(ans\ge mid\),直接将机器里的数全部删掉,否则将机器外的数全部删掉,然后递归下去,每次 \(n\) 都会减半。次数是 \(f(n) = n + f(n / 2) \approx2n\),然后算上最开始扫一遍的 \(n\) 次。同时这题需要一些常数优化的技巧。

「IOI2022」千岛

对于任意 \(u\to v\) 存在 \(v\to u\) 的 sub,找到一个分叉即可构造答案,即 \(1-x,x-y,x-z\),\(x\) 可以等于 \(1\)。

对于任意 \(u\to v\) 存在另一条 \(u\to v\) 的 sub,我们只用找到一个环,正着走两遍,再倒着走两遍即可。

对于所有测试点,核心思路是找到两个环然后构造答案,需要讨论各种 case,细节没想清楚,回头再补。

标签:le,可以,mid,笔记,IOI2022,ge,我们
From: https://www.cnblogs.com/7KByte/p/16591188.html

相关文章

  • Qt学习笔记6
    P19.资源文件添加P20.模态和非模态对话框创建P21.消息对话框P22.其他标准对话框(P19.资源文件添加)(创建了新项目)(这次创建时,Details里的Baseclass选的是QMai......
  • 操作系统学习笔记3 | 操作系统简史
    读史使人明智。通过操作系统的历史,了解操作系统是怎么编出来的,为什么要有那些模块,哪些东西才是核心。参考资料:课程:哈工大操作系统(本部分对应L6&&L7)实验:操作系统原......
  • 《正念》读书笔记2
       无为之为,无为不是懒惰,而是与之相反,是让一切顺其自然,使一切按其本来的方式发展,要达到无为的境界,我们要付出很多努力,这是一种挥洒自如的努力,需要用一生时间培养的“......
  • 《被讨厌的勇气》读书笔记2
      人的一切烦恼都来自人际关系,而要解决人际烦恼,就需要进行课题分离,就是他人的课题和自己的课题进行分离。目的就是共同体感觉。其中人际关系中最重要的是自我接纳,他人......
  • LCA学习笔记
    简介LCA(LowestCommonAncestor)中文名是最近公共祖先。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。LCA问题的求解有多种方法,如:倍增、Tarjan、树......
  • ST表学习笔记
    简介ST表是用于解决可重复贡献问题(满足\(x\)操作\(x=x\),如\(max(x,x)=x\))的数据结构,它在区间查询最值时可以做到\(O(n\logn)\)预处理,\(O(1)\)查询,是种优秀的......
  • BIT学习笔记
    基础树状数组:先放一张图:图中黑色的框为\(a\)数组(原数组)。图中黑色的框为\(t\)数组(树状数组)。我们可以得到$t[i]=\sum_{j=1}^{j\le2k}{a[i-2k+j]}$。在这里......
  • Day02笔记
    01.引用的使用场景(重点)1.引用作为函数参数//1.引用作为函数参数voidfunc(int&a,int&b){ intsum=a+b; cout<<"sum="<<sum<<endl;}voidtest01(){......
  • Day1笔记
    01.C++概述(了解)c++语言在c语言的基础上添加了面向对象编程和泛型编程的支持。02.第一个程序helloworld(掌握)#define_CRT_SECURE_NO_WARNINGS#include<iostream>using......
  • 2022-08-15 第六小组 高佳誉 学习笔记
    Mysql数据库数据库数据库【按照数据结构来组织、存储和管理数据的仓库】。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据对于公司......