【补题】CF I

昨晚 CF 掉大分了。。。补一波以前比赛的题


CF745

D. Mathematics Curriculum

对于位置 \(i\),包含 \(i\) 的区间中不同最大值个数可以拆分到 \([1,i]\) 后缀最大值个数和 \([i,n]\) 前缀最大值个数,等价于笛卡尔树上祖先个数(可以从构建笛卡尔树时单调栈的角度考虑)。
题目转化为求有多少种大小为 \(n\) 的笛卡尔树,根的深度为 \(1\),深度为 \(m\) 的点数为 \(k\)

考虑 DP,设 \(f[i,j,k]\) 表示大小为 \(i\) 的笛卡尔树,深度为 \(j\) 的点数为 \(k\) 的个数,转移时把左右子树拼起来

\[f[i,j,k]\leftarrow\sum_{a}\sum_{b}{i-1\choose a}f[a,j-1,b]\times f[i-a-1,j-1,k-b-[j=1]] \]

然而这个 DP 是 \(O(n^{5})\) 的,需要卡常

CF727

E. Game with Cards

考虑倒序 DP,设 \(f[i],g[i]\) 为第 \(i\) 张卡放左/右手,第 \(i+1\) 张放在另一只手是否可行,以转移 \(f\) 为例。\(f[i]=1\) 的条件为存在 \(j\),使得 \(g[j]=1\),第 \(i\) 张卡在 \([i,j]\) 中可以一直呆在左手,\([i+1,j]\) 中的卡都可以放在右手

容易发现只需要考虑满足 \(g[j]=1\)\(\min j\),时间复杂度 \(O(n)\)

  • 倒序
  • 贪心优化决策

F. Strange Array

精简一下奇异值的计算方式:对于 \(l\le i\le r\),记 \(x,y,z\)\([l,r]\) 中小于、等于、大于 \(a_i\) 的元素个数,那么 \(i\) 的奇异值为 \(\max(\lfloor\frac{y+z-x}{2}\rfloor,\lfloor\frac{x+y-z-1}{2}\rfloor)\)(其实是把讨论 \(a_i\) 与中位数的大小写成了 \(\max\) 形式)

以计算 \(\lfloor\frac{y+z-x}{2}\rfloor\) 为例,可以以 \(i\) 为分界拆成两端,以 \([l,i]\) 为例。把 \(\le a_{i}\) 的元素记为 \(1\)\(>a_{i}\) 的元素记为 \(-1\),那么 \(\max y+z-x\) 即为 \([1,i]\) 的最大后缀和

实现上可以从小到达计算每个数值,线段树维护每个元素与当前数值的大小关系。时间复杂度 \(O(n\log n)\)

  • 尝试精简题目给的计算方式而不是直接优化

CF725 (Div.3)

D. Another Problem About Dividing Numbers

一次除以 \(x\) 可以通过 \(y\) 次除以 \(x\) 的约数代替(\(x=\prod p_{i}^{c_{i}},y\le \sum c_{i}\)),简单算出上下界即可。需要特判 \(k=1\)

F. Interesting Function

考虑第 \(i\) 位,其变化次数为 \(\lfloor\frac{r}{10^{i}}\rfloor-\lfloor\frac{l}{10^{i}}\rfloor\)

  • 按位考虑

G. Gift Set

LG 题解区的 \(O(1)\) 做法:

\(x\le y,a\le b\),那么答案一定是选若干个 \((a,b)\),然后尽可能选 \((a+b,b+a)\)(选两次,分别为 \((a,b),(b,a)\)

显然我们想让选完 \((a,b)\)\(x,y\) 尽量接近(否则选 \((a,b),(b,a)\) 时会被浪费),那么选 \((a,b)\) 的次数为 \(\lfloor\frac{y-x}{b-a}\rfloor\),为避免特判,再算一下选 \(\lfloor\frac{y-x}{b-a}\rfloor+1\) 的答案

需要特判 \(a=b\)

  • 考虑等价情况/条件

CF705

E. Enormous XOR

大型分类讨论

  • \(l\) 最高位为 \(0\) :答案为 \(2^{n+1}-1\)。取 \([2^{n}-1,2^{n}]\) 即可
  • \(r\) 为奇数:答案为 \(r\)
    证明:归纳法。
    • 左端点 \(\le r-2\)
      • 右端点 \(\le r-2\):答案最大为 \(r-2\)
      • 右端点 \(=r-1\):如果答案 \(>r\),则一定存在一位使得该位前 \(ans\)\(r\) 相同,该位 \(r\)\(0\)\(ans\)\(1\)。需使 \([l,r-1]\) 中该位出现奇数个 \(1\),设最后一次出现 \(1\)\(mid\),则 \([l,mid],[mid+1,r]\) 中各有奇数个数(\(mid\) 在该位后都是 \(1\)\(r-1\) 为偶数,可以看官方题解的图),总长为偶数,因此 \(ans\) 的最高为为 \(0\),矛盾
      • 右端点 \(=r\):答案为右端点 \(\le r-2\) 的某个区间异或上 \(r-1\oplus r=1\),最大为 \(r+1\)
    • 左端点 \(>r-2\):显然为 \(r\)
  • \(r\) 为偶数:
    • \(l\le r-2\):答案为 \(r+1\),由 \([r-2,r]\) 取到(\([l,r+1]\) 的答案为 \(r+1\),因此 \([l,r]\) 的答案不会更大)
    • \(l>r-2\):显然为 \(r\)

与官方题解的证明顺序不同,官方题解的略乱,但符合思考顺序

  • 打表,通过部分规律深入思考
  • 不要怕分类讨论,但要注意时间
  • 小数据测全(测了 \(l=0,r=1\) 没测 \(l=r=0\)

F. Enchanted Matrix

行列独立,关键在于求最小循环节/最大循环节数

LG 题解区做法:

最大循环节数一定是 \(n\) 的约数,依次考虑 \(n\) 的质因子 \(p\)。设当前循环节数为 \(k\),那么只需要询问前 \(\frac{n}{k}\) 列是否能分成 \(p\) 节,比较显然的想法是询问 \([1,p-1],[2,p]\) 是否相等,但本题要求矩形不交

  • \(p=2\):直接询问即可
  • \(p>2\)\(p\) 为质数,因此一定为奇数。可以考虑设中间变量,分别比较 \([1,\lfloor\frac{p}{2}\rfloor],[\lfloor\frac{p}{2}\rfloor+1,p-1]\)\([1,\lfloor\frac{p}{2}\rfloor],[\lfloor\frac{p}{2}\rfloor+2,p]\),若都相等则合法

官方题解

CF702 (Div.3)

CF701

E. Move and Swap

确实比 F 难。

考虑 DP。首先蓝点与红点一定在同一层,且由于蓝点可以走到下一层任一点,因此只需要记录红点位置即可刻画出当前状态,设 \(f[u]\) 为红点在 \(u\) 时的最大值,转移时考虑是否交换:

  1. 不交换:红点直接从父亲走下来,蓝点走到当前层权值最大/最小的点
  2. 交换:蓝点变到 \(u\),红点在这层任选,即为 \(f[fa[v]]+|a[u]-a[v]|\),拆开绝对值得到 \(\max(\max\{f[fa[v]]-a[v]\}+a[u],\max\{f[fa[v]]+a[v]\}-a[u])\)
  • 从限制多/状态少的入手
  • \(|a-b|=\max(a-b,b-a)\)

F. Copy or Prefix Sum

哈希表被卡

CF700

E. Continuous City

Acfboy

显然要从二进制入手,但思考&实现细节都很多。也许可以先忽略点编号随便连边,然后拓扑排序?

  • 通过连一条 \(l-1\) 的边可以把值域平移到 \([1,r-l+1]\)
  • 先解决 \(r=2^{k}\) 的情况在尝试以此为基础扩展
posted @ 2022-01-13 20:45  401rk8  阅读(71)  评论(0编辑  收藏  举报