05 2023 档案
摘要:[AGC012C] Tautonym Puzzle 本题考查增量构造。具体而言如下递归构造 \(f(n)\)(假设它需要的递归已经构造好): 当 \(n\) 为奇数时,可以先构造 \(f((n-1)\div2)\),然后在中部和尾部添加一个新的数。由于新的数可以接在原来任意一个子序列后,所以 \(\
阅读全文
摘要:# [[ABC302G] Sort from 1 to 4](https://www.luogu.com.cn/problem/AT_abc302_g) 一道简单的性质分析题。 考虑到这个数列只有 $[1,4]$ 的数,就可以考虑有哪几种交换方案。 我们先统计出 $t[i][j]$ 表示应该填 $i
阅读全文
摘要:# [AGC010B Boxes](https://www.luogu.com.cn/problem/AT_abc302_f) 这道题其实是一道 `01BFS` 求最短路的模型,但是建模比较难想。 首先需要想到对于每个集合内的点两两连边,边权为 $1$,由于开始和结束时需要从起点到中转点和中转点到终
阅读全文
摘要:# [AGC010B Boxes](https://www.luogu.com.cn/problem/AT_agc010_b) 先将题目转换成正着的,即由全 $0$ 变为给定的序列。操作次数为 $k=\dfrac{\sum a_i}{n(n+1)\div 2}$。条件 $k$ 必定是整数很显然。 这
阅读全文
摘要:题目 还是比较简单的。根据 $i!\times (i+1)=(i+1)!$,所以可以对于从 $1\sim x-1$ 的所有数进行判断,记 $cnt[i]$ 表示 $i!$ 的数量。如果 $cnt[i]\mod (i+1)$ 不是 $0$,那么肯定是无解的了,否则需要将 $cnt[i]\div(i+1
阅读全文
摘要:题目 这道题与 C1 相比就多了 $0$,所以做法是几乎一致的。 C1 是有 $n$ 为奇数无解,但这道题需要统计一下非 $0$ 数的个数根据这个判断是否有解。 然后就是相邻两个非 $0$ 数之间的关系了。如果这个两个数符号相同,那么把它们中间的最后一个 $0$ 给后者,然后其他 $0$ 浪费掉,前
阅读全文
摘要:题目 首先,如果有奇数个数,那么正负 $1$ 肯定不能完全抵消,无解。 如果有偶数个数,必定有解,构造方案: 对于每两个位置,如果相同,将这两个数划分为 $1$ 组。 否则,将两个数各划分为 $1$ 组。 这样,对于第一种,这个区间是 $0$,对于第二种,这两个区间的和是 $0$,显然符合题意。 #
阅读全文
摘要:[CSP-S 2021] 回文 首先考虑爆搜。我们可以先确定 $b$ 的第一个位置和最后一个位置,然后将数列放入两个队列中。 4 1 2 4 5 3 1 2 3 5 这是样例,首先最优的情况当然是第一个位置和最后一个位置都取 L,即 $4$。 两个队列分别是 $q1=[1,2]$ 和 $q2=[5,
阅读全文
摘要:动物园 这道题的背景有些牵强,其实 $q_i$ 完全没有用。 首先,如果《饲养指南》中提到的规则在动物园已有的动物中存在,那么这种饲料一定会购买,那么就可以养 $p_i$ 位为 $0/1$ 都可以。但是如果动物园已有的动物中不存在,那么如果新动物 $p_i=1$ 必定是要买新的饲料,那么不符合题意。
阅读全文
摘要:# [和积和](https://www.luogu.com.cn/problem/P5686) 这道题侧重于考察**数学功底**。 首先,前缀和优化一般都是能想到的,但是这样的复杂度是 $O(n^2)$。 考虑对于小的情况进行模拟。 设 $sa_i$ 表示 $\sum_{i=1}^n a_i$,$s
阅读全文
摘要:格雷码 这道题考的有点偏,主要侧重于数学。考虑格雷码的构造方案是分成两部分,前面一部分正序,后面一部分倒序,所以可以使用二分来求解。具体的,我模拟了一下,找了找规律。 2 3 这组样例看不出什么,先分成前后两半,发现 $3$ 在最后,所以就改成按照 10 (在前一半输出 1,后一半输出 0)的顺序了
阅读全文
摘要:日期 这道题比较水,但还是十分值得深思的,有点像数学里的分类讨论问题。 日期为 $31$ 月份为 $1,3,5,7,8,10,12$ 无需修改。 月份为 $2,4,6,9,11$ 改 $1$ 次(都改成 $1$ 月)。 除掉以上合法的月份,当个位为 $4,6,9$ 时,修改十位不能达到目的。 其他情
阅读全文
摘要:# [廊桥分配](https://www.luogu.com.cn/problem/P7913) 国内国际是完全独立的,可以分开考虑。 发现如果每次我们让新来的航班强制使用当前编号最小的空闲廊桥,那么对于一个给定的 $k$,停靠到编号 $\ge k$ 的就是在只有 $k$ 个廊桥时无法使用到廊桥的航
阅读全文
摘要:# [假期计划](https://www.luogu.com.cn/problem/P8817) 由于要考虑相邻城市之间的中转点不超过 $k$(即所经过边数不超过 $k+1$),所以首先要预处理出 $dis[i][j]$,即两两之间的点的距离,可以 `bfs` $n$ 次解决。然后就是考虑怎么进行枚
阅读全文
摘要:字串变换 这道题用双向广搜会比单向快得多(设每次扩展是 $k$ 个,则就是 $k^{10},2k^5$ 二者的差距)。但是还是可以被卡掉的。而且双向广搜还需要注意,每次必须扩展一层。如下图,如果两边同时扩展一个点,那么图中左边的情况有一个中间点,而后面的搜索没有中间点,那么答案就会比最优解大 $1$
阅读全文
摘要:# [传送门](https://www.acwing.com/problem/content/description/189/) 这道题与 [拦截导弹](https://www.cnblogs.com/wscqwq/p/17416716.html) 类似,就是需要套一个爆搜,由于 $n$ 很小,所以
阅读全文
摘要:#[拦截导弹](https://www.acwing.com/problem/content/description/1012/) 贪心策略如下所示:图一表示具体做法,图二表示证明 。然后转移的话可以从上一列的许多状态中转移,但是需要满足两个条件 保证当前状态和
阅读全文
摘要:这道题与 数独 几乎完全相同,只是需要计算靶形得分,可以直接使用一个 $9\times 9$ 的矩阵,如下代码 #include<bits/stdc++.h> using namespace std; const int num[9][9]={ {6,6,6,6,6,6,6,6,6}, {6,7,7
阅读全文
摘要:破坏正方形 首先计算出火柴总数和正方形总数。 考虑横着的火柴有 $n+1$ 行,每行有 $n$ 根,竖着的同理(旋转 $90°$),所以一共有 $2n(n+1)$ 根火柴。 边长为 $1$ 的正方形有 $n^2$ 个,$2,(n-1)^2;3,(n-2)^2;\dots;n,1^2$,$\sum_{
阅读全文
摘要:排书 此题使用 $IDA*$ 解决。首先是一个迭代加深的 dfs,然后判断条件里是类似于 $A*$ 的条件,如果当前的估价 $+$ 当前的实际花费 $\ge$ 答案就可以返回了。 这里比较显然,无需证明,比 $A*$ 的证明简单。 考虑统计中间八个格子中的众数 $x$。由于每次最多移入一个数,移出一
阅读全文
摘要:排书 此题使用 $IDA*$ 解决。首先是一个迭代加深的 dfs,然后判断条件里是类似于 $A*$ 的条件,如果当前的估价 $+$ 当前的实际花费 $\ge$ 答案就可以返回了。 这里比较显然,无需证明,比 $A*$ 的证明简单。 考虑每次都会更改如上图所示的三个数的后继关系,所以每次最多消除 $3
阅读全文
摘要:k短路 这道题考察的还是 $A*$ 算法。 首先考虑设立估价函数:当前点到终点的最短路(因为从当前点到终点的所有路径中最短路最短,一定满足 $\le$)。只需要在反向图上做一遍 dijkstra 就能求得。 然后考虑证明第 $i$ 次弹出的就是第 $i$ 短路。类似 $A*$ 中的证明。 #incl
阅读全文
摘要:八数码问题 $A*$ 算法例题。 首先判断是否有解。这里有一个条件:将八数码转化为序列后如果逆序对数为偶数,一定有解,否则一定无解。 充分性难证明,只证明必要性:只要是有解必定是偶数。 行内移动序列没有变,数量不变。 如果上下移动发现逆序对变化是 $[0,±2]$。 而答案序列逆序对为 $0$,为偶
阅读全文
摘要:$A*$ 算法 这个算法其实就是 dijkstra 的变种,是对于一般的 bfs 的一种优化手段。 首先需要设置一个东西叫做估价函数。普通的 bfs 的估价函数一般取 $0$。这个东西如果你要保证一定正确,记起点到当前点的距离为 $d[i]$,到末尾的真实距离为 $g[i]$,设你的估价函数是 $f
阅读全文
摘要:字典树最多构建节点个数计算 给定 $n,k$,然后随机 $n$ 个长度为 $k$ 的 01 串,求所有情况下将这 $n$ 个串构建成字典树中节点数最多可能有几个。注意,构建方式是扫描每个串,注意是从这个串第一个字符到最后一个,依次加入字典树。说人话:基本构建方式。 如图,$n=3,k=2$ 时,节点
阅读全文