技术栈
信奥赛
froyoisle
14 小时前
c++
·
算法
·
csp
·
信息学
·
信奥赛
CSP 真题解析:[CSP-J 2020-T3] 表达式
摘要: 本题是 2020 CSP-J 的第三题,难度较高(为该年最难的一题)。题意:给定一个后缀逻辑表达式,包含与 &、或 |、非 ! 三种运算,每个变量初始值已知。需要快速回答 q q q 次独立查询:临时取反某个变量后,整个表达式的值是多少?暴力求值会超时,核心解决方案是利用栈构建表达式树,再通过一次自顶向下的 DFS,结合短路运算性质预处理每个变量的"敏感度"——该变量改变能否影响根节点的值。预处理后,每次查询只需 O ( 1 ) O(1) O(1) 查表即可得出答案。
王老师青少年编程
5 天前
c++
·
二分答案
·
csp
·
高频考点
·
信奥赛
·
进击的奶牛
csp信奥赛C++高频考点专项训练:【二分答案】案例5:进击的奶牛
Farmer John 建造了一个有 N N N( 2 ≤ N ≤ 10 5 2 \leq N \leq 10 ^ 5 2≤N≤105) 个隔间的牛棚,这些隔间分布在一条直线上,坐标是 x 1 , x 2 , ⋯ , x N x _ 1, x _ 2, \cdots, x _ N x1,x2,⋯,xN( 0 ≤ x i ≤ 10 9 0 \leq x _ i \leq 10 ^ 9 0≤xi≤109)。
froyoisle
6 天前
c++
·
算法
·
bfs
·
csp-j
·
算法竞赛
·
信息学
·
信奥赛
CSP 真题解析:[CSP-J 2019-T4] 加工零件
摘要: 本文详细解析了 CSP-J 2019 第四题「加工零件」的解题思路与 C++ 实现。题目本质上是判断无向图中从 1 号点出发,能否恰好走 L 步到达目标点 a。利用「反复横跳不改变路径奇偶性」的图论性质,问题转化为求 1 号点到各点的奇数最短路和偶数最短路。文章通过 BFS 预处理奇偶最短距离,实现 O(1) 在线查询,并梳理了孤立点特判、数组越界、无穷大初始化等常见易错点,附带完整参考代码。
王老师青少年编程
9 天前
c++
·
二分答案
·
csp
·
高频考点
·
信奥赛
·
木材加工
csp信奥赛C++高频考点专项训练:【二分答案】案例2:木材加工
木材厂有 n n n 根原木,现在想把这些木头切割成 k k k 段长度均为 l l l 的小段木头(木头有可能有剩余)。
王老师青少年编程
1 个月前
c++
·
真题
·
csp
·
信奥赛
·
复赛
·
csp-x
·
摧毁
2022年CSP-X复赛真题及题解(T4:摧毁)
坐地日行八万里,巡天遥看一千河。2077 年,人类不仅仅是赛博科技得到了发展,太空技术也已经得到了极大的发展。地球的不同外轨道上已经充斥着各种功能用途的人造卫星。因为一个轨道上的卫星数量是有上限的,且卫星更新换代速度很快,如果想要发射新的卫星,需要把所有旧的卫星摧毁。
王老师青少年编程
1 个月前
c++
·
真题
·
csp
·
信奥赛
·
复赛
·
独木桥
·
csp-x
2022年CSP-X复赛真题及题解(T1:独木桥)
长度为 L L L 米的独木桥上有 n n n 个人,他们每个人都想以最快的时间离开危险的独木桥。已知每个人在独木桥上的行走速度为 1 米每秒,每个人只要能走到独木桥的两个端点中的其中一个就可以离开独木桥。
王老师青少年编程
1 个月前
c++
·
真题
·
csp
·
信奥赛
·
复赛
·
csp-x
·
移动棋子
2022年CSP-X复赛真题及题解(T2:移动棋子)
一维的棋盘上有无限多个格子,每个格子都有一个编号,最中间的格子编号为 0 0 0, 0 0 0 号格子向右依次编号为 1 , 2 , 3 , ⋯ 1,2,3,\cdots 1,2,3,⋯,向左依次编号为 − 1 , − 2 , − 3 , ⋯ -1,-2,-3,\cdots −1,−2,−3,⋯。
王老师青少年编程
1 个月前
c++
·
记忆化搜索
·
方格取数
·
csp
·
信奥赛
·
csp-s
·
提高组
信奥赛C++提高组csp-s之搜索进阶(记忆化搜索案例实践3)
设有 n × m n \times m n×m 的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会取走所有经过的方格中的整数,求它能取到的整数之和的最大值。
王老师青少年编程
1 个月前
c++
·
csp
·
信奥赛
·
csp-s
·
提高组
·
iddfs
·
埃及分数
信奥赛C++提高组csp-s之搜索进阶(迭代加深IDDFS)
迭代加深搜索(Iterative Deepening DFS,简称 IDDFS)是一种特殊的深度优先搜索。它给普通的 DFS 套上了一层“深度限制”循环,搜索过程如下:
王老师青少年编程
1 个月前
c++
·
记忆化搜索
·
搜索
·
信奥赛
·
csp-s
·
提高组
·
滑雪
信奥赛C++提高组csp-s之搜索进阶(记忆化搜索案例实践1)
Michael 喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael 想知道在一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子:
froyoisle
1 个月前
c++
·
算法
·
csp
·
算法竞赛
·
信奥赛
CSP 真题解析:[CSP-J 2025-T3] 异或和
摘要:本题是 CSP-J 2025 的一道贪心算法题,要求在长度为 n 的序列中选出尽可能多的不相交区间,使得每个区间的异或和等于给定值 k。核心解法是利用前缀异或和的性质(b[r] ⊕ b[l-1] = k ⇔b[l-1] = b[r] ⊕ k),结合右端点优先的贪心策略,并使用哈希表记录每个前缀异或值最后出现的位置,实现 O(n)时间复杂度的求解。关键易错点包括:p[0] = 0 的边界初始化、更新语句的顺序(先判断后登记)、以及数组大小需覆盖 0~2^20-1 的范围。
王老师青少年编程
1 个月前
c++
·
记忆化搜索
·
csp
·
信奥赛
·
csp-s
·
提高组
·
搜索进阶
信奥赛C++提高组csp-s之搜索进阶(记忆化搜索核心思想)
记忆化搜索(Memoization Search)是一种通过记录已经遍历过的状态信息,从而避免对同一状态重复遍历的搜索算法。可以把它理解为带有“备忘录”的递归——递归每次返回的时候,将结果放到备忘录里;每次进入递归的时候,先看看备忘录里有没有当前状态,如果有就直接返回,不用再重复计算。
王老师青少年编程
2 个月前
c++
·
csp
·
高频考点
·
信奥赛
·
提高组
·
搜索剪枝
·
小木棍
信奥赛C++提高组csp-s之搜索进阶(搜索剪枝案例实践1)
乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 50 50 50。现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。
王老师青少年编程
2 个月前
c++
·
dfs
·
csp
·
信奥赛
·
搜索剪枝
·
搜索优化
信奥赛C++提高组csp-s之搜索进阶(搜索剪枝核心思想 )
搜索剪枝的本质,是在搜索树的生长过程中提前判定某些分支不可能产生解(或最优解),从而将其“剪掉”不再继续搜索,以大幅减少搜索空间。
王老师青少年编程
2 个月前
c++
·
信奥赛
·
csp-s
·
提高组
·
搜索剪枝
·
生日蛋糕
·
最优性剪枝
信奥赛C++提高组csp-s之搜索进阶(搜索剪枝案例实践2)
7 月 17 日是 Mr.W 的生日,ACM-THU 为此要制作一个体积为 N π N\pi Nπ 的 M M M 层生日蛋糕,每层都是一个圆柱体。
王老师青少年编程
2 个月前
c++
·
csp
·
平衡树
·
信奥赛
·
csp-s
·
提高组
·
fhq treap
信奥赛C++提高组csp-s之FHQ Treap
FHQ Treap(无旋Treap)是一种基于Tree(二叉搜索树)+ Heap(堆)的数据结构。它的核心特点是不需要旋转操作,仅依靠**分裂(Split)和合并(Merge)**两个核心操作就能实现所有平衡树功能。这也是它相比Splay和有旋Treap的最大优势——代码短小、易于理解、支持可持久化。
王老师青少年编程
2 个月前
c++
·
前缀和
·
差分
·
csp
·
高频考点
·
信奥赛
·
铺设道路
csp信奥赛C++高频考点专项训练之前缀和&差分 --【一维差分】:[NOIP 2018 提高组] 铺设道路
春春是一名道路工程师,负责铺设一条长度为 n n n 的道路。铺设道路的主要工作是填平下陷的地表。整段道路可以看作是 n n n 块连续的区域,一开始,第 i i i 块区域下陷的深度为 d i d_i di 。
王老师青少年编程
2 个月前
c++
·
平衡树
·
treap
·
信奥赛
·
csp-s
·
提高组
信奥赛C++提高组csp-s之平衡树(Treap)
二叉查找树(Binary Search Tree, BST)的查找、插入、删除操作时间复杂度为 O(h),其中 h 为树的高度。在理想情况下,BST 的高度为 O(log n),但在最坏情况下(例如插入的节点序列本身有序),BST 会退化成单链表,性能下降到 O(n)。
王老师青少年编程
2 个月前
c++
·
前缀和
·
csp
·
高频考点
·
信奥赛
·
求和区间和
csp信奥赛C++高频考点专项训练之前缀和&差分 --【一维前缀和】:求区间和
给定由 n n n 个正整数组成的序列 a 1 , a 2 , ⋯ , a n a_1, a_2, \cdots, a_n a1,a2,⋯,an 和 m m m 个区间 [ l i , r i ] [l_i,r_i] [li,ri],分别求这 m m m 个区间的区间和。
王老师青少年编程
2 个月前
c++
·
前缀和
·
csp
·
高频考点
·
信奥赛
·
“非常男女”计划
csp信奥赛C++高频考点专项训练之前缀和&差分 --【一维前缀和】:“非常男女”计划
近来,初一年的 XXX 小朋友致力于研究班上同学的配对问题(别想太多,仅是舞伴),通过各种推理和实验,他掌握了大量的实战经验。例如,据他观察,身高相近的人似乎比较合得来。