首页 > 其他分享 >CSP2022 解题报告

CSP2022 解题报告

时间:2022-12-13 11:14:14浏览次数:44  
标签:报告 CSP2022 times 选择 枚举 解题 权值 添加 预处理

J T1 乘方

  • \(a=1\),答案为 \(1\)。
  • \(a>1\),答案很容易就超过 \(10^9\),直接暴力计算即可。如果在做乘法时进行判断,则可以不开 long long

J T2 解密

\[p+q=n-e\times d+2 \]

\[p\times q=n \]

\[p=\frac{y}{q} \]

\[\frac{y}{q}+q=n-e\times d+2 \]

\[q^2-(n-e\times d+2)\times q+n=0 \]

这是一个一元二次方程,二分或者公式求解,两个解即为 \(p\) 和 \(q\)。

J T3 逻辑表达式

输入的字符串是中缀表达式,而「短路」通过后缀表达式能很方便地统计。

一个暴力的想法是模拟这个过程,每次找到当前区间的根结点,然后递归,时间复杂度 \(O(|s|^2)\)。

考虑优化,预处理出每个左括号对应的右括号位置,这样在寻找根结点的过程中遇到被括号包含的区间就可以直接跳过。

容易发现,对于每一种运算符,我们寻找其所有位置所花费时间的总和不会超过 \(O(|s|)\)。因为只有两种运算符,所以总时间复杂度与之相同。

J T4 上升点列

看到单调不降,考虑 DP。答案的形式显然是选择最初的一些点,添加一些点将它们连起来,剩下没用完的点添加到最前面或者最后面。

按 \(x\) 坐标为第一关键字,\(y\) 坐标为第二关键字从小到达排序。令 \(f_{i,j}\) 表示强制选第 \(i\) 个点,前 \(i\) 个点中总共选了 \(j\) 个点,至少需要额外添加的点数。转移直接枚举上一个选的点即可,时间复杂度 \(O(n^3)\)。

利用状态和值对调的套路可以做到 \(O(n^2k)\)。

S T1 假期计划

首先可以 \(O(n(n+m))\) BFS 出任意两点间的最短路。

数据范围只支持我们枚举两个点,观察到 \(A\) 和 \(D\) 的一端均是 \(1\),所以可以对每个 \(B\) 预处理出最优的 \(A\),每个 \(C\) 预处理出最优的 \(D\)。

然后枚举 \(B\) 和 \(C\) 就做完了,注意有不能重复的限制,预处理要保留可能的三个点。

S T2 策略游戏

纯粹的分析题。

先手策略显然是选择最小值最大的那一行,但我们没办法对其直接计算。

关键就在于分析后手的决策,从而得出先手的决策,这样才能够快速找到答案的位置。

  • 后手所有数非负或非正,如果先手可选正负性相同的数,就选绝对值最大的,否则就选绝对值最小的。
  • 后手可正可负,先手选择非负中绝对值最小的或者非正中绝对值最小的。

S T3 星战

观察到如果满足实现连续穿梭,那么必然满足实现反击,此时图为一棵基环内向树。

也就是每个点出度均为 \(1\),即所有边起点恰好构成了 \(\{1,2,\cdots,n-1,n\}\) 的可重集。

而操作是对于终点的,这意味这我们需要快速处理起点,唯一的方式是利用信息的可合并性。

给每个点随机一个权值,维护所有起点的权值和,如果当前权值和等于所有点的权值和,那么大概率就对了。

对于每个终点,预处理其所有起点的权值和,以及当前其所有不能出发的起点的权值和,这样四个操作都能 \(O(1)\) 解决。

S T4 数据传输

\(k=1\) 是树链求和,树上前缀和或者倍增或者树剖都行。

\(k=2\) 只会用到树链上的点,倍增或者树剖 DP 预处理,最后拆成若干段拼起来,注意在 LCA 处其中一侧要翻转一下。

\(k=3\) 思路一样,但可能会用到与树链相邻的点。具体地,状态有两个参数,记录从链的一端出发向另一端,最多经过几条边能遇到被选择的点。

以下三种情况值得注意

  • 第一种是合并时的转移,下方红色点与上方红色点为初始选择,转移时尝试将上方红色点替换成上方蓝色点。
  • 第二种也是合并时的转移,下方红色点与上方红色点为初始选择,转移时尝试添加蓝色点。
  • 第三种是状态的完善,下方红色点为初始选择,尝试添加蓝色点使得端点距离从 \(2\) 减小到 \(1\)。

处理完这三种情况(其实就对应着距离端点的三种距离),剩余合并就和 \(k=2\) 基本一致了,枚举合法距离暴力转移即可。

细节比较多,但想清楚了也就那么回事,主要还是难在初始状态的处理(包括合并时一侧没有被选择的点)

标签:报告,CSP2022,times,选择,枚举,解题,权值,添加,预处理
From: https://www.cnblogs.com/shanoamomoprprprprprprprprprprprprprprprprprprprpr/p/16978027.html

相关文章

  • 20221312 实验七——缓冲区溢出 实验报告
    缓冲区溢出实验指导书内容一、实验简介缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码......
  • openGauss 社区 2022 年 8 月运作报告
    八月社区运作报告  社区治理  技术进展  社区活动  社区活力 2022/09/02前言九月启,长夏逝去,凉秋悄来。让我们再来回顾openGauss在这炎热的八月里有哪些回......
  • 安卓APP源码和设计报告——个人通讯录
    摘要随着移动设备制造技术和移动通信网络的迅猛发展,全球手机用户日益增加,手机成为了很多人日常生活中必不可少的一部分,手机业在日益发展的同时,人们对手机的功能需求和......
  • 安卓期末大作业——个人简历APP源码和设计报告
    Android课程需求文档设计题目: 个人简历APP学生姓名: 学号:1.Smart.apk功能设计说明Android真机运行进入该app。背景音乐服务播放正常,并设置可通过右上角按钮关闭musicservice......
  • 20221322 实验七-缓冲区溢出 实验报告
    缓冲区溢出实验一、实验简介缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段......
  • 英国UKCA认证玩具测试报告
    什么是UKCA认证?UKCA是英国合格认定(UKConformityAssessed)的简称.2019年2月2日,英国公布了在无协议脱欧的情况下将会采用UKCA标志方案。2021年1月1日之后,开始正式实施新标......
  • 亚马逊化妆品类斑贴HRIPT测试报告
    亚马逊要求化学品/美容类产品都需要办理此类测试化妆品在使用时与人体表面直接接触,如果产品存在问题,可能会引起包括皮肤不良反应。斑贴试验作为常用的化妆品安全性测试,可以......
  • Delphi 11.2应用体验报告
    Delphi11.2按个人预期发布了!官方下载地址:​​https://altd.embarcadero.com/download/radstudio/11.0/RADStudio_11_2_10937a.iso​​,安装过程:如果你从11.1安装,则是无缝升......
  • OpenHarmony社区运营报告(2022年11月)
     本月快讯•11月24日,第二十届中日韩三国IT局长OSS会议暨东北亚开源软件推进论坛以在线形式成功召开。经审核评选认定,OpenAtomOpenHarmony(以下简称“OpenHarmony”)开......
  • 加拿大亚马逊CCPSA测试报告
    法规名称:CanadaConsumerProductSafetyAct,加拿大消费品安全法 法规简称:CCPSA法规编号:S.C.2010,c..发布时间:2010-12-15生效时间:2011-06-20法规简介加拿大消费品安全法(CCP......