24.9~11 好题 杂题记录

news/2024/12/16 15:52:59/文章来源:https://www.cnblogs.com/happyzero/p/18610358

构造题 & 交互题

  • 不必最优化的题目加入一些更严的限制会更好做 【1,4,5】
  • 递归思想 or 将大问题分解成小问题拼接起来【6】
  • \(A\to B\Leftrightarrow A\to C\to B\Leftrightarrow A\to C(C\to A),B\to C(C\to B)\)【2,3】
  • 正难则反,特别是后面限制严格强于前面的【8】
  • 只要多种方案中有一种可行即可,分讨 or 鸽巢原理;或者先用最简单的方案将规模缩小后用简单的方法(如直接暴力)解决【1,10】
    可以求解出一个比较好求的、包含原问题的解,输出一部分【12】
  • 斐波那契表示法 【7】
  • 若所有数可以整体偏移,不妨假定第一个为有优秀性质的数【11】
  • 质数在取模不重复上有良好的性质【12】
  • \(a\)\(b\) 二进制下相差 \(k\)\(\Leftrightarrow\) \(a\operatorname{xor}c=b\),其中 \(c\) 二进制下 \(1\) 的个数为 \(k\)【11】
  1. [AGC066A] Adjacent Difference 加入限制:修改后的 \(a_{i,j}\) 必须是 \(d\) 的倍数,因此可以想到相邻的一个改成奇数倍一个改成偶数倍,两种改法代价和是 \(dn^2\),则必有一个不超过 \(\frac{1}{2}dn^2\)。record。

  2. \(\color{red}\star\) P10887 【MX-S3-T3】「FeOI Round 1」再演 冥思苦想很久发现跟题解都不一样!发现当 \(res=n+1\) 时,必须是 \(\le n\) 的和 \(>n\) 的一一搭配,可以不断交换 \(1\)\(>n\) 的得到两两配对情况;从一开始的局面到 \(res=n+1\)(最后倒回去),其实只需要不断拆散 \(\le n\) 的两两配对,于是不断交换 \(n+1\to 2n\)\(res\) 即可。
    构造 \(res=n+1\) 的过程最多只要 \(n-1\) 次,后面的询问 \(n-1\) 次后另一组也随之确定,剩下的 \(1\) 次是前面取到 \(n-1\),此时前一次的 \(res\) 肯定和 \(2n\) 在一组,后面又可以省掉一次。注意特判 \(n=1\)。record。

  3. CF778D Parquet Re-laying 玩一玩可以发现对于目标一定可以到全部横着,具体方案是从左往右从上到下依次做,每次不断往右下角找一个可以转的,而横的到目标只要再做一遍目标到横着的然后逆转操作序列。record。

  4. [ARC152D] Halftree 挺正常的一个构造题。偶数显然无解;\(+k\) 其实就是将连边划分为 \(\gcd(k,n)\)、每组 \(\frac{n}{\gcd(k,n)}\) 个点,\(n\) 为奇数因此组数和每组个数都是奇数,一组组看随便玩一下就出来了。record。

  5. \(\color{red}\star\) [ARC145D] Non Arithmetic Progression Set 每一步都在我意想不到的地方。化简一下限制:\(x-y\ne y-z\Leftrightarrow x+z\ne 2y\),二进制玩不出来就改三进制!发现每一位如果都是 \(0,1\) 的话一定可以满足(因为 \(x,z\) 至少有一位不同)。
    同时,所有数任意加 or 减一个数都不变,因此先将 \(a_i\) 赋值为\(i\) 二进制分解完当成三进制的值并偏移一位将最后一位留空,紧接着直接减小差距在 \(n\) 以内通过改变最后一位凑出和。record。

  6. [AGC041C] Domino Quality \(n=1,2\) 无解,\(n=3\) 容易构造但没什么用,手玩一下发现 \(n=4,5,6,7\) 都可以构造出每行每列个数为 \(3\) 的情况,于是按 \(\bmod 4\) 余数将若干个 \(n=4\) 和另一个矩阵沿对角线拼起来。record。

  7. [ARC122C] Calculator 感觉很早以前模拟赛打过这题自以为做出来了结果挂惨了。给的形式就很像斐波那契,于是考虑\(n\) 划分成几个斐波那契的和,在相应位置时加 \(1\),注意操作的奇偶性。record。

  8. [ARC122E] Increasing LCMs 由于前面的数可能会影响后面的,但与具体的顺序无关,因此很难不倒序考虑。事实上,倒序考虑随便选一个合法的就行了,因为后面的限制严格强于前面。求 \(\operatorname{lcm}\) 会溢出,所以可以直接求 \(\prod \gcd\)\(x\) 比较。record。

  9. CF1922E Increasing Subsequences 最自然的想法是二进制拆分成几个单增的序列,但大约是在 \((\log X)^2\) 级别的,把相同长度的前缀合并在一起即可,长度大约是 \(2\log X\)。record。

  10. CF1909E Multiple Lamps 诈骗题。最简单的就是全部按一遍,剩下的个数是有平方因子的数的个数。事实上,这一数量\(n\ge 20\) 时均小于 \(\lfloor\frac{n}{5}\rfloor\)。只用考虑 \(n<20\) 时的情况,预处理出可能的按钮序列暴力判断即可。
    record。

  11. ARC138D Differ by K bits 相差 \(k\)相当于异或上一个 \(1\) 的个数为 \(k\) 的数钦定 \(a_1=0\)爆搜即可(跑不满)。

  12. \(\color{red}{\star}\) ARC140E Not Equal Rectangle \(n,m\) 范围大概是值域的平方,而质数一般有 \(\bmod\) 不相同的特点,因此选择 \(n=m=23^2\),并从中截取下来一块。然后是神秘构造。咕。

  13. P11190 「KDOI-10」反回文串 部分分提示分两种情况:众数出现次数 \(cnt\) 大于一半/小于一半。小于一半:答案为 \(\lfloor{\frac{n}{2}}\rfloor\)。类似摩尔投票那样贪心地每次选出现次数最多的两个即可。
    麻烦的在大于。先特判:若 \(cnt=n\) 则无解;若 \(cnt=n-1\),此时若整个串是一个回文串无解,否则答案为 \(1\)。易证答案最优为 \(n-cnt\)。设 \(l,r\) 为非众数的第一个和最后一个出现的位置,\([l,r]\) 均为非众数且 \(l=1\)\(r=n\) 是简单的。否则由于懒不想再推一遍,只能说是很臭长的构造方法,多试试就出来了。

其他的一些思维题 & 数学题

  • 时间倒流【7】
  • 对于一些奇怪的条件,可以通过换项、同时加减等变得“工整”后再分析【3】
  • 数形结合(折线法)【2,6】
  • \([l,r]\)\(x\) 倍数 \(\Leftrightarrow s_r\equiv s_{l-1}\pmod x\),类似消消乐【8】
  • 平方数等可以先把满足条件的挑出来,卡不过不断调整上界【12】
  • \(n\) 个限制 \(n\) 个变量,考虑用一些特别的方法/别的约束求解【9】
  1. [ARC152B] Pass on Path 猜测在同一个休息站出发。证明:若第一次相遇在位置为 \(x\) 的休息站,则第二次相遇在长度为 \(L-x\) 的休息站,初始在同一个休息站出发则可以看做第一次相遇,一定最优。record。

  2. \(\color{red}{\star}\) [ARC152C] Pivot 妙!由于反转后最大值和最小值的差不会变,所以仅需使最小值最小。同时,操作 \(i\) 相当于在数轴上把以 \(a_i\) 为轴翻转,点的相对,分布不变,此时最小值由 \(a_1\to 2a_i-a_n\),变化值 \(b_i=2a_i-a_n-a_1\)
    这个 \(b_i\) 的贡献是正还是负,事实上可以随便取,因为若当前操作贡献正负不是预期的,就可以不断操作同一个 \(a_i\) 改变,最后再根据情况将 \(a_i\) 正负更正即可。于是就转变成了\(b_{1\sim n}\) 的最大线性组合 \(x\) 使得 \(x<a_i\),根据裴蜀定理,设 \(d=|\gcd\{b_i\}|\),最小的 \(a_1\)\(a_1\bmod d\),答案即为 \(a_1\bmod d+a_n-a_1\)。record。

  3. CF1909D Split Plus K 一个很牛的转换\(x+k=y+z\Leftrightarrow x-k=(y-k)+(z-k)\)。于是一开始把所有 \(a_i\) 都减去 \(k\),若符号不同则无解(需特判 \(0\)),否则答案为 \(\gcd(a_i)\)。record。

  4. CF1359E Split Plus K 一个限制是:所有结果都等于 \(x\bmod a_1\),不难发现这个当且仅当 \(a_i\) 都是 \(a_1\) 的倍数时满足,于是枚举 \(a_1\) 用组合数算即可。record。

  5. CF1334E Divisor Paths 由于是因子个数的差,\(x\to \gcd(x,y)\to y\) 一定是最优的,每次减少一个质因数,\(x\to \gcd(x,y)\),设 \(\frac{x}{\gcd(x,y)}=p_1^{\alpha_1}p_2^{\alpha_2}...p_r^{\alpha_r}\),则不难推得方案数为 \(\frac{(\sum \alpha_i)!}{\prod \alpha_i!}\)\(\gcd(x,y)\to y\) 同理,相乘即为答案。record。

  6. CF1204E Natasha, Sasha and the Prefix Sums 枚举前缀最大值 \(i\),恰好不好做,换成求大于等于后容斥一下,于是等价于向右上或右下走碰到 \(y=i\)。若 \(n-m>i\) 显然随便走,否则按经典折线法做即可。record。

  7. ARC138B 01 Generation

  8. ARC129C Multiple of 7

  9. \(\color{red}{\star}\) ARC129D -1+2-1

  10. ABC374E Sensor Optimization Dilemma 2

  11. CF134B Pairs of Numbers

  12. 「提高班 Day 5」平方数

动态规划

  • 可以通过减少可行状态的方法优化复杂度【9】
  • 有很多个限制的可以尝试找出最强的一个【1】
  • \(f_{i,j}\) 的最大值 \(k\) 可转换为 \(f_{i,k}\)\(j\)(是否满足条件)【3】
  • 通过特殊性质简化操作序列【23】
  • 填数不一定要按位置填,之后插进去也行【18】
  • 不同数字个数 \(\Leftrightarrow\) \(a_i\) 的贡献为 \([lst_{a_i}+1, a_i]\)【4】
  • 拆分数的经典加加减减:
    • 最前面加入一个 \(1\);全局加 \(1\);
    • 初始为 \(0\),任意后缀加 \(1\)
    • 初始为 \(n\),任意前缀减 \(1\)
    • …… 【1】
  • \(i\) 个限制在 \([l_i,r_i]\) 的,可以直接把所有端点离散下来讨论【17】
  • 交换可以转化为前缀/后缀和更改后进行 dp【6】
  • 当答案状态不确定时,可以统计下一步到答案的可行状态的贡献【21,22】
  • 类似楼房重建一类问题的线段树 pushup【24】
  • \(n\) 个中取 \(m\) 个数,每个可以选满足某种条件或不选可以加入 \(m\) 个特殊的数作组合数【17】
  • 不好记录状态却有限制的,如果数据规模小可以直接暴搜【19】
  1. \(\color{red}{\star}\) [AGC041D] Problem Scores 前两个限制简单,着手在第三个限制,而第三个其实最强的就是前 \({\lfloor{\frac{n}{2}}\rfloor+1}\) 个数的和 \(a\) 大于后 \({\lfloor{\frac{n}{2}}\rfloor}\) 个数的和 \(b\)。维护 \(\Delta=a-b\),拆分数常见的加加减减:初始全部设为 \(n\)\(\Delta=n\),每次把任意一个前缀都减少 \(1\),这样 \(\Delta\) 一定会减少,于是问题转化成了:有 \(n\) 个数,每个对应一个代价 \(w_i\),可取任意多个,求总代价不超过 \(n\) 的方案数,完全背包即可。record。

  2. [AGC046B] Extension 不难的一道 dp。记 \(f_{i,j}\) 表示 \(i\)\(j\) 列的方案数,基础转移时 \(f_{i-1,j}\times j+f_{i,j-1}\times i\)重复的部分是第 \(i\) 行在前 \(j-1\) 行且第 \(j\) 列黑点在前 \(i-1\) 行的情况,减去 \(f_{i-1,j-1}\times (i-1)\times (j-1)\) 即可。record。

  3. P6223 [COCI2009 Final Exam#1] PODJELA 把钱数放到状态里面显然不现实,所以考虑经典转化:\(f_{i,j}\) 表示 \(i\) 子树内操作 \(j\) 次使除了 \(i\) 钱数都大于等于 \(0\)\(i\) 拥有的最大钱数。于是枚举操作次数,若 \(f_{son,j}\) 大于等于 \(a_j\) 则不一定要给 \(i\),否则一定得给 \(i\)。record。

  4. CF833B The Bakery \(f_{i,j}\) 表示前 \(i\) 个数划分为 \(j\) 段的最大价值,发现不同数字的个数的处理相当于 \(a_i\) 的贡献为 \([lst_{a_i}+1, i]\),于是枚举 \(j\),每次线段树区间加贡献\(O(n\log n)\) 转移即可。record。

  5. [ARC073F] Many Moves 赛时切的!题解。record。

  6. \(\color{red}{\star}\) AGC046C Shift

  7. ARC059F バイナリハック

  8. P9745 「KDOI-06-S」树上异或

  9. ABC374F Shipping

  10. \(\color{red}{\star}\) ARC171C Swap on Tree

  11. ARC107D Number of Multisets

  12. P4302 [SCOI2003] 字符串折叠

  13. P2051 [AHOI2009] 中国象棋

  14. P3757 [CQOI2017] 老C的键盘

  15. \(\color{red}{\star}\) P4099 [HEOI2013] SAO

  16. P2339 [USACO04OPEN] Turning in Homework G

  17. \(\color{red}{\star}\) P3643 [APIO2016] 划艇

  18. [AT_tdpc_string] 文字列

  19. P3262 [JLOI2015] 战争调度

  20. P6116 [JOI 2019 Final] たのしいたのしいたのしい家庭菜園

  21. CF908D New Year and Arbitrary Arrangement

  22. CF1156F Card Bag

  23. CF67C Sequence of Balls

  24. 楼房重建

数据结构

  • 对应不同情况下的贡献,考虑统一形式【3】
  • 树剖点转边是将边权放到儿子节点上,接下来查询时要把 \(LCA\) 扣掉【5】
  1. P11021 「LAOI-6」区间测速 按 \(t\) 从小到大排序,通过生活常识知道最快的一定是相邻两个时间点组成的时间段的平均速度,修改最多只会影响四段:修改位置相邻两段和目标位置相邻两段,先求出未修改前的全局前三大,修改时将包含 \(t_{u_i}\) 的最小值踢掉,并和改完后相邻两段的平均速度、原先左右两端合并平均速度取 \(\max\),具体操作用 set 实现,细节有点多。record。

  2. \(\color{red}{\star}\) [AT_jag2017autumn_k] Conveyor Belt 咕。

  3. P5797 [SEERC2019] Max or Min

  4. P11158 【MX-X6-T4】夢重力

  5. Qtree1

基础算法

  • 贪心策略:将 \(i\) 变为/放入之前/后第一个可以放的,常用并查集维护【1】
  • 对于某些看似无用的限制,满足单调性的可以二分【2】
  • 看起来像来回反悔的贪心可以强制先一个再贪心【3】
  1. P6155 修改 交换 \(b\) 其实是总次数一定的情况下,多的尽量多。于是从后往前枚举 \(i\),若有重复则将 \(a_i\) 变为之后第一个未出现过的,可以用并查集来维护。

  2. P11188 「KDOI-10」商店砍价

  3. 「2024-02-15 南外模拟赛」弱化的杨表

图论

  • 判断是否可以变到目标局面,可以对操作顺序等进行限制判断是否可行【4】
  • 给 A 赋值要求满足 B,可以转化为用 B 对 A 进行限制【5】
  • 拆点【12】
  • 差分约束不一定是最短路,最长路也可以【6】
  • \(a\le bc\Leftrightarrow \log_{k}(a)\le log_k{b}+log_k{c}\)【8】
  • 判断 \(z\) 是否在 \(x, y\) 的路径上相当于判断 \(dis(x, z)+dis(y, z)\) 等不等于 \(dis(x, y)\),也相当于判断 \(LCA(x,y,z)=LCA(x,y)\&\&(LCA(x,z)=x||LCA(y,z)=y)\),反之亦成立【15】
  • 求可以走进环的点,不用缩点,可以直接建反边拓扑【9】
  • 对于总贡献为每个点的深度乘 \(w_i\) 的可以对于所有子树把字数内 \(w_i\) 加起来【14】
  • 同余最短路【7】
  • 头尾相同可以连边或类似的,不用两两遍历,可以头字符向尾字符连边,把点转换为边【10】
  • 网络流题目可以通过最大贡献减损失转换为最小割【15】
  • 对于环等特殊图的要求,可以从出度、入度的角度考虑【13】
  • 找环的时候,可以根据具体情况判断在遍历前/后判断【11】
  • 笛卡尔树 \(i\) 的子树为可以拓展最远的、无大于(小于)其权值的数 【14】
  1. \(\color{red}{\star}\) ARC107F Sum of Abs

  2. P4768 [NOI2018] 归程

  3. ABC270F Transportation

  4. \(\color{red}{\star}\) AGC027F Grafting

  5. \(\color{red}{\star}\) P5590 赛车游戏

  6. P3275 [SCOI2011] 糖果

  7. P3403 跳楼机

  8. P4926 [1007] 倍杀测量者

  9. P3436 [POI2006] PRO-Professor Szu

  10. P1127 词链

  11. P3520 [POI2011] SMI-Garbage

  12. P1251 餐巾计划问题

  13. 「提高班 Day 3」强连通分类

  14. 丘岩岩萨满

  15. [TJOI2008] 通讯网破坏

  16. P4313 文理分科

字符串

  • 不同子串个数等于总数减去相邻前缀的公共前缀大小【1】
  1. 不同子串个数

其他

  • 根号分治【1】
  • 高维前缀和【2】
  1. P3591 [POI2015] ODW

  2. CF165E Compatible Numbers

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853820.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线程和进程

线程 什么是线程和进程? 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进…

FastExcel 合并单元格(相当的行数据,进行合并)

目录需求思路实现Excel导出单元格全量合并策略日期格式转换接口代码ServiceDTO 使用FastExcel数据导出:官网: https://idev.cn/fastexcel/zh-CN 需求 信用代码、填报人,唯一时,将:信用代码、单位名称、填报人,进行 row 合并,并垂直居中对齐思路 这边不需要做列合并,所…

街面环卫算法视频分析服务器浅析智能视频监控在智慧城市的应用与趋向

在数字化浪潮的推动下,智慧城市的建设已成为全球范围内城市发展的重要趋势。智慧城市不仅仅是技术的集合,它更是一个系统工程,涉及到城市管理的各个方面,旨在通过高科技手段提升城市的运行效率和居民的生活质量。 其中,智能视频监控技术作为智慧城市建设的关键组成部分,正…

嘻嘻嘻嘻嘻测试下

凡你能说的,你说清楚。凡你不能说的,留给沉默!

算法网关视频分析网关无线视频监控技术如何以智能化手段提升抗干扰与数据安全效果

在当今这个信息化快速发展的时代,无线技术的应用已经渗透到我们生活的方方面面,尤其是在视频监控领域,无线传输技术正以其独特的优势,改变着传统的监控系统部署方式。本文将探讨无线视频监控业务的发展情况、面临的挑战以及如何通过技术手段提高系统的抗干扰能力和数据安全…

打破局限!如何在项目管理中运用鱼骨图分析法

一、鱼骨图分析法在项目管理中的重要性简述在项目管理的漫长旅程中,我们常常会遭遇到各种各样棘手的问题,这些问题就像隐藏在暗处的礁石,随时可能让项目的 “船只” 偏离航线,甚至搁浅。小到团队成员之间沟通不畅,导致工作衔接出现缝隙;大到项目进度严重延误,成本超出预…

使用wsimport命令生成webService客户端代码

wsimport 是 JDK 自带的一个工具,可以根据 WSDL 文件生成 Java 类。 1.进入JDK/bin目录,从地址栏进入cmd 2.执行如下命令:wsimport -keep -s D:\tmp -p com.cn.phone -verbose http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl-keep:是否生成java源文件 -s:指…

实验6 模板类、文件I/O和异常处理

1.实验任务1 运行代码: Complex.h:#pragma once#include <iostream> #include <stdexcept>// 声明 //////////////////////////////////////////////////// // 复数模板类声明 template<typename T> class Complex { public:Complex(T r = 0, T i = 0);Comp…

人员乘坐皮带识别智慧矿山一体机:矿山达到智能化最终要求需要哪些AI算法及关键因素?

在数字化转型的大潮中,非煤矿山行业正站在智能化升级的风口浪尖。随着人工智能、大数据、物联网等技术的飞速发展,矿山智能化已成为提升行业竞争力、保障作业安全、优化资源利用的关键路径。 本文将深入探讨实现矿山智能化所需的AI算法及其应用,并分析在构建智能化矿山生态系…

容器与虚拟机的区别与关系

什么是虚拟机技术? 传统的虚拟机技术(VMware)将一组硬件虚拟化,在其上安装并运行一个完整的操作系统,然后在该系统上运行所需的应用进程;虚拟机就像一台主机。 什么是容器? 容器是一个应用层面的抽象,用于将代码和依赖资源打包在一起。本文分享自天翼云开发者社区《容器…

数理统计中的分位数

目录上分位数和下分位数的定义下分位数的直观理解上分位数的直观理解常用分布中的分位数正态分布卡方分布 上分位数和下分位数的定义 设连续型随机变量 \(X\) 的分布函数为 \(F(x)\),概率密度函数为 \(f(x)\),则:对于任意正数 \(\alpha(0<\alpha<1)\),称满足条件\[F(…

SWD下载口的端口状态

1、关于SWD SWD是MCU下载程序和调试的端口,分为四线制和五线制 四线制:VCC GND SWDIO SWCKL 五线制:VCC GND SWDIO SWCLK RESET 四线制没有留出RESET引脚,没有RESET引脚,下载完程序,会自动运行。SWDIO是双向数据线,实现数据的输入和输出。SWCLK是 时钟信号线。 2、SWD电…