• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

02xd

  • 博客园
  • 联系
  • 管理

公告

View Post

考前复习

复习笔记

3397

这个图有 \(2n-2\) 条边,而一个点分别会在正图和反图出现一次,所以把除了 \(1,n\) (必为根节点)的点拆成正图点和反图点,而一条边只出现在一个树上,因此考虑用二分图刻画这个图。

发现如果从找父亲出发,一个点会选择唯一的一条边作为自己的父亲边,所以一条边在正图相当于给编号小的点一个父亲边,在反图相当于给编号大的点一个父亲边,且只能给俩人中的一个父亲边,所以相当于二分图上左侧 \(2n-2\) 条边,连向右侧两点,求得就是完美匹配个数。

这个问题太难,但我们发现其实左侧点每个度数都为 \(2\),考虑把这个点变为连接他二分图上连的两个点之间的一条边,并给他定向,指向谁就表示匹配给谁,发现转化后要求变为使每个点各有恰好一入度,因此对于每个连通块,只有基环树满足要求,而基环树的定向方式有 \(2\) 种,所以用并查集维护每个连通块是否为基环树,如果不是输出 \(0\),否则输出 \(2^{连通块个数}\)。

3404

简单规律题

3405

赛时写了个“很强”的假做法把大洋里全过了,结果交上去 \(35\),别人用按秩合并秒了。

正解是划分等价类,并把每次的合并变成建边,在 \(2\) 时暴力 \(dfs\) 后缩点,这样是 \(O(n\alpha(n))\),但实际上常数挺大。

3406

其实很典,把边看作一个约束关系,问题可以转化为把序列分为不同区间,区间内部的限制都不超过区间的左右端点,这个把限制写出来之后可以发现就是个三维偏序。

3407

类人群星闪耀时,不是很可补

3356

考虑对于一团数以他们最高的二进制位划分为上下两个集合,显然优先选上面集合的数并删掉部分下方集合的数,发现删掉的是一段后缀,所以不用真的去删,改变右端点,之后递归处理就好了。

3357

考虑这个限制其实很强,只需要使 \(a_{1,i}\) 合法,后续只要不出现自相矛盾的情况,就能构造出矩阵其他所有数,然后组合求第一行填数方法即可。、

3360

考虑在一个已有哈密顿回路的图上加边以增加回路数量,发现后续只需考虑每种环被算了多少次,组合数一下再乘上不同的环数,然后把组合数拆出来 \(O(n)\) 算即可。

3361

考虑用贪心的策略来转移,发现过程大概为不断向右拓展,到某个颜色出现的最后一次时变为那个颜色,然后之前所有同色的就合并了,若和左边的颜色一样则没有贡献,而上下两个颜色不同则说明要 \(2\) 次操作,否则 \(1\) 次,然后只需考虑 \(f_{i,1/2}\) 表示扩展到 \((1,i),(2,i)\) 的最小数即可。

3362

尺取法,区间内 \(lcm\) 各不相同等价于每个数都在一个质因子上严格最大,然后用 \(set\) 维护出现次数的集合并记录其编号,维护最大值即可。

3372

绿绿构造,首先 \(t\) 是某个串的子序列显然无解,然后顺序考虑 \(t\) 中的字符,设为 \(t_i\),把每个串未加入答案序列的部分中第一个出现 \(t_i\) 的位置前的所有字符加入答案序列,再把这个字符加入,因为每个字符至少与 \(t\) 在其中一位相异,因此总会在与 \(t\) 匹配完之前提前被全部加入答案序列,所以这样构造的序列无法匹配到最后一位,不是 \(t\) 的子序列,符合要求。

3373

单峰可以直接顺序操作,没有特殊情况,直接输出最大值,先把相邻同奇偶合并。

考虑只有 \(2\) 个峰的情况,手玩一下可以发现 \(2\) 个峰是可以等价合并起来的,就是把中间的谷每个往上 \(+2\),直到只有 \(1\) 个峰为止。那么 \(2\) 个峰能合并,所有峰都能合并,于是就做完了。

3374

对于 \(k\le 16\) 的情况使用状压即可,复杂度 \(O(n^3\cdot2^k)\),对于 \(k>16\),可以发现整个序列只能被分为 \(3\) 个左右长为 \(k\) 的段,此时这个可以压进状态,因此考虑把整个序列分为 \(3\) 列,第 \(i\) 列排着 \((i-1)*k+j\) 的所有下标,这样 \(dp\) 时状压第 \(i\) 行有多少个 \(1\),以 \(1,k+1,2k+1,2,k+2,...,n\) 的顺序 \(dp\),可以发现一个数的影响已经被压进状态里了,剩下的暴力转移,复杂度是 \(O(n^3\cdot (k+1)^{\lfloor\frac{n}{k}\rfloor})\) 。

3234

简单签到,但出题人临时改题面,恶心。

3235

直接做是一般图匹配,不可做,但进一步发觉性质后发现,一个点是依靠 \(x\) 还是靠 \(y\) 来匹配有一条边指向左还是右节点的类似性质,算是一个经典 \(trick\),所以考虑把 \(x\) 坐标和 \(y\) 坐标看作点,一个点 \((x,y)\) 则是连接横坐标 \(x\) 和纵坐标 \(y\)的边,这个图显然是二分图,左侧横坐标右侧纵坐标。

问题转化为给每条边定向,使得每个点的入度为偶数,容易发现充要条件是一个连通块内有偶数条边,并查集 \(check\) 即可。

3236

循环移位的意义就是把一个格子抛到最后,使两边相同颜色的两段合并,最终要使颜色段之间不相交,考虑转化为保留尽可能多的颜色段,在每个颜色左端点时决策是否抛弃中间的所有其他颜色,其他地方时判断是否把 \(i\sim n\) 全部删掉即可。

3237

根号分治,对于 \(k\) 大的莫队暴力询问,对于 \(k\) 小的莫队维护值域,记录每一块的最小值,因为加入只会一个一个数加,最小值每次变动也是 \(O(1)\),因此两种情况都是移动 \(O(1)\),设 \(B\) 为阈值,第一种询问 \(O(\frac{q}{B})\),第二种 \(O(B)\), 综合起来最劣复杂度分别是 \(O(\frac{n^2}{B})\),\(O(n^{\frac{3}{2}}B^{\frac{1}{2}})\),平衡后得出 \(B=n^{\frac{1}{3}}\) 时最平均,但不知道为什么我的程序在 \(B=10\) 时跑的最快?

3240

注意到答案的一次函数贡献形式,显然有选取的 \(0\) 的个数单调递增,因此枚举分界点并求出两边 \(0\) 连续段,\(1\) 连续段的 \(max\) 值,第一次 \(O(n^2)\) 卷积,之后不断增加 \(0\) 的选取数量,即左端点右移打擂台即可。

3238

考虑把每次减掉的数拿出来,发现要么直接是序列中原有的,要么是之前被减过的,把这些之前被减过的数加回到他减的那个数那,就又变成了原序列中的数,因此如果后手要赢,即操作完一顿后没有数留下,必要条件是能选出若干数,相加等于所有数总和的一半。

接下来考虑充分性,如果上述条件满足,则所有数会被分为两个总和相等的集合,无论先手选哪个数,后手只要选另一个集合的数,两个集合就会减去相同值,最终因为两数总和相同且减去相同值,操作完后一定会同步归零,所以先手必败,反之一定会剩一个数出来,先手必胜,\(bitset\) 维护即可。

3400

简单 \(hash+\)前缀和。

3401

类似递归子问题的 \(dp\) 思想,我们预处理 \(dp\),设 \(f_{i,j}\) 表示第一行 \(i\) 个点,第二行 \(j\) 个点且当前在上面的方案数,转移考虑必须经过新加进来的新点,首先有同层转移,注意新的点可以做起点也可以做终点(做终点时插入到原终点还没被覆盖的一侧),\(2\cdot \sum\limits ^{i-1}_{k=1} f_{k,j}\to f_{i,j}\),前缀和优化即可,然后有从另一层转移的方案,把图倒过来即可表示跨层,再考虑 \(i\) 可以直接被到达并插入 \(i\) 个空位中,或者直接不走,有 \(i\) 个点可作为起点, \(i \cdot (f_{j,i-1}+1)\to f_{i,j}\)。

3402

纯粹的组合推导,考虑枚举中间 \(LDS\) 和 \(LIS\) 共用的那个数字,随后两边方案独立且镜像处理,决策第 \(i\) 个数是属于哪一个数列的,枚举此数列的上一个数,然后这之间的数都是另一个数列的,可减法分讨出有多少个,放置方案数即为 \(\large \binom{i-k-1}{a_j-a_i-1-b}\)。

注意到不同的中间数字只有最后两个数会变,所以只做一次扫描就行。

3428

注意到线段不相交,因此我们考虑依次添加线段并关注每个点从第 \(i\) 根竹子往上爬的终点位置变化,发现横一根竹子相当于交换两根柱子的终点位置,所以问题转化为每次交换相邻的数,要多少次能构造出给定排列。

若给定的不是排列则无解,否则操作次数为逆序对个数。

3432

简单题不多赘述

3433

考虑区间 \(dp\) 维护贪心过程,即用 \(n^3\) 枚举贪心转移点来获得全局最优,比较经典。

3434

考虑递归子问题式地处理,每次进行容斥,并以此确定一些位置再逐步递归,很有启发意义,复杂度玄学。

3412

手摸阳历,考虑在尽可能高的地方放药来减少用药,发现只有在某个点下方 \(2\) 个点都要用药时才必须用药,从下往上统计即可。

3413

先不考虑子串的限制,发现这玩意就是个满二叉树,贡献就是 \(2^{n+1}-1\),接下来考虑哪些贡献重复,发现只有两个起点只差 \(1\) 且相同的串会被并为一个节点,这其实就是说全是同一个字符,考虑这种情况的节点能被多少种方式到达,乘上 \(2^{len+1}-1-len\) 之后再减掉就行,多少种方式就是个经典的组合,即左边 \(i\) 个数右边 \(j\) 个数,有多少种删空的方式,注意左侧最后一个点要最后删,\(\binom{i+j-1}{j-1}\) 即可。

3415

假设集合价值 \(A<B<C\),把序列分成两半,左侧搜索所有

posted on 2025-11-28 22:18  final_story  阅读(6)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3