05 2023 档案

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