首页 > 其他分享 >CSP2024-25

CSP2024-25

时间:2024-10-12 08:51:25浏览次数:1  
标签:25 begin le end 题意 CSP2024 circ bmatrix

2A

题意(gym105158C):

给定正整数序列 \(\{a\}\),构造一个 \(\mathbb Z \to \mathbb Z\) 的映射 \(f\),满足 \(\forall i < n,\ f(a_{i}) \le f(a_{i + 1})\)。最小化 \(f(x) \ne x\) 的 \(x\) 数量。

数据范围:\(1 \le n \le 10^6,\ 1 \le a_i \le n\)。

对于 \(i \notin \{a\}\),显然是可以构造 \(f(i) = i\),对结果没有影响。

对于 \(i \in \{a\}\),设其第一次和最后一次出现的位置为 \(l_i, r_i\)。由于 \(f(a_{l_i}) = f(a_{r_i})\),因此 \(\forall j \in [l_i, r_i], f(a_j) = f(i)\)。

把若干相交 \(l, r\) 缩成一段,使得两两连续段所包含颜色不同,一个连续段只能包含一个元素。

最大化不动点个数,转化为求最长不降子序列长度,时间复杂度 \(O(n \log n)\)。submission

A

题意(gym105158D):

给定平面上若干整点,从中任选两点,求他们的曼哈顿距离比上欧几里得距离的最大/最小值。

数据范围:\(n \le 1\times 10^6\),保证没有点重合。

\[\dfrac{a + b}{\sqrt{a^2 + b^2}} = \sin\theta + \cos \theta = \sqrt2\sin(\theta + \dfrac{\pi}{4}) \]

\(PQ\) 与 \(x\) 轴夹角越接近 \(45^{\circ}\) 或 \(135^{\circ}\),答案越大。

越水平或垂直答案越小。

如何使两点夹角最接近水平?其他角度可以通过旋转坐标系化归为水平的情况。

按纵坐标排序,只有相邻点对可能产生贡献,其他情况不优。

再考虑如何旋转坐标系。

由于只需要考虑纵坐标的相对大小,我们可以把 \(\begin{bmatrix}x\\y\end{bmatrix}\) 左乘 \(\begin{bmatrix}1&1\\-1& 1\end{bmatrix}\) 得到新坐标 \(\begin{bmatrix}x + y\\x - y\end{bmatrix}\),等价于顺时针旋转 \(45^{\circ}\)。

同理顺时针旋转 \(135^{\circ}\),\(\begin{bmatrix}x - y\\ x + y\end{bmatrix}\)。

因此只要按照 \(x - y\) 和 \(x + y\) 排序即可,时间复杂度 \(O(n\log n)\)。

submission

B

题意:给出一棵树,对于每个 \(k \in \left[0, \lfloor\frac{n- 1}{2}\rfloor\right]\) 求解以下问题:

在所有 \(2^{n} - 1\) 种非空点集中,有多少大小为 \(m\) 的点集满足 \(\max_{i, j\in S} \text{dist}(i, j) \le 2k\)。

数据范围:\(1 \le m \le n \le 5000\)。

结论:若树上所有边边权均为正,则树的所有直径中点(边)重合。

若直径长为偶数:

假设存在两条不同中点的直径 \((s_1, m_1, t_1),\ (s_2, m_2, t_2)\),显然满足 \(d(s_1, m_1) = d(m_1, t_1) = d(s_2, m_2) = d(m_2, t_2)\)。

其中 \(d(s_1, t_2) = d(s_1, m_1) + d(m_1, m_2) + d(m_2 , t_2) > d(s_2, t_2)\),矛盾。

奇数的情况类似。

也就是一个点集所构成的(虚)树直径交于一点。

枚举这个中点 \(u\),统计:\(\forall_{v \in S} \text{dist}(u, v) \le k\),且至少有两个等于 \(k\) 的点分布在不同子树的 \(S\) 个数。

做一下简单容斥即可。

对于直径为奇数的情况,可以枚举中边,类似方法统计。时间复杂度 \(O(n^2)\)。

submission

C

D

题意(CF1466H):

标签:25,begin,le,end,题意,CSP2024,circ,bmatrix
From: https://www.cnblogs.com/Luxinze/p/18459736

相关文章

  • oracle 19c dgbroker 报错ORA-16664 with ORA-12514如何解决
    alert中一堆这个保存一新***********************************************************************FatalNIconnecterror12504,connectingto:(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=)(INSTANCE_NAME=hrz)(CID=(PROGRAM=oracle)(HOST=sd4)(USER=oracle)))(ADDRESS......
  • Cinema 4D最新2025版安装包教程百度云下载
    如大家所熟悉的,Cinema4D常常被简称为C4D,它是一款深受使用者和用户喜爱的3D建模、动画和渲染软件,广泛应用于影视、动画、科学、建筑等领域。目前最新为C4D2025版本。高效的建模系统C4D的建模系统高效且强大,支持多边形建模、细分曲面等多种建模方式,可创建复杂的几何体和表面......
  • 20222316 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    一、实验内容缓冲区溢出定义:缓冲区溢出是一种程序错误,在这种情况下,数据被写入到内存中的缓冲区时超过了该缓冲区所能容纳的最大容量。当超过缓冲区的边界时,额外的数据会溢出到相邻的内存位置中,覆盖掉其他数据或指令,导致程序行为异常或系统安全漏洞。缓冲区溢出的原因:编程......
  • 20222311 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    202223112024-2025-1《网络与系统攻防技术》实验一实验报告1.实验内容本次实验主要内容为BOF注入攻击,任务如下:掌握反汇编及其指令修改程序的机器指令,从而实现BOF注入攻击注入一段Shellcode,以实现BOF注入攻击2.实验过程任务1:修改可执行文件机器指令,改变程......
  • # 20222409 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1逆向工程与汇编基础:掌握了汇编指令(如NOP、JMP等)在控制程序流中的作用。学会使用objdump反汇编可执行文件,并通过十六进制编辑器修改机器码以改变程序执行流程。1.2缓冲区溢出(BufferOverflow)原理:了解堆栈结构和返回地址覆盖,理解如何通过超长输入覆盖返回地址来控......
  • 20222318 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    一.实验内容(一)本周学习内容本周学习了缓冲区溢出的相关原理,包括简单的汇编代码、缓冲区溢出本质、堆栈的工作原理、Shellcode的编写等等。(二)实验涉及知识点(1)Linux基本操作:①熟悉Linux环境:能够在Linux系统中进行基本的文件操作、目录导航,如cd等。②常用指令理解:如管道(|)、输入......
  • 20222307 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1本周学习内容进程内存管理在Linux系统中,当OS可执行程序被加载到内存后,其内存布局主要包括三个关键段:*.text段:包含程序的指令,这些指令是只读的,用于指导CPU执行操作。*.data段:存储静态初始化数据,这些数据是可写的,程序在运行时可以直接访问和修改。*.bss段:用......
  • 20222418 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容本周课程内容为缓冲区溢出和shellcode:2.实验过程(1)直接修改程序机器指令,改变程序执行流程①首先根据网上教程安装好kali虚拟机,更改主机名为heshan;下载目标文件pwn1,将pwn1文件放入共享文件夹并在VMware中设置共享以便使用,并将其重命名为pwn20222418。②然后运行可......
  • 2025年软考考试+报名时间安排!这份日历请收好!
    软考(计算机技术与软件专业技术资格(水平)考试)是纳入全国专业技术人员职业资格证书制度统一规划,实行大纲、试题、标准、证书均统一的考试办法。2024年软考报名已经结束,想要报考的同学请提前备考2025年的考试,那2025年软考考几次?考试是什么时候呢?2025年软考考试时间:软考考试时......
  • 20222302 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容本周学习内容1.熟练掌握了栈和堆的概念。2.掌握了Linux的基本操作,如shell命令和编译器gcc、调试器gdb的使用。3.掌握了缓冲区溢出的原理。实验任务本次实验的对象是一个名为pwn1的linux可执行文件。该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何......