日记

日记

周三 11月 20 2024
907 字 · 4 分钟

纳西妲生日快乐

Black and White↗

太简单了不讲。

函数调用↗

我们考虑对于每个 1 p v 操作算出它被执行了多少次,记作 sumisum_i。设 mulimul_i 表示执行了 ii 函数之后整个序列会乘上多少(也就是之前的函数会多执行多少次)。设我们正在处理第 ii 次操作。对于 11 和 33 操作,它的 mulimul_i 肯定是 11。对于 22 操作,就有 muli=vmul_i = v。

我们对于每个 33 操作都从 ii 向 ∀j∈[1,Ci],gj\forall j \in [1,C_i],g_j 建边。那么显然,它形成了一个 DAG。每个点的 mulmul 都是他们出到的点的 mulmul 的积。我们可以跑一遍拓扑排序,逆着拓扑序处理 mulmul。

如何处理 sumsum?我们发现 mulumul_u 就是所有入到 uu 的点的 sumsum 之和。我们可以顺着拓扑序处理。

那对于那些又有 11 又有 22 的 33 函数怎么搞呢?如图

我们发现显然 +2+2 要多乘上一个 33,也就是说他要加上 sum1×3sum_1 \times 3。对于 +1+1 显然要再多乘上一个 3×4=123 \times 4 = 12。正好链式前向星是倒着的,所以我们维护一个 valval 表示这个点要加上一个 val×sumval \times sum。每处理完一个点,我们都要将 valval 乘上它的 mulmul。

昨天晚上看题解给自己看破防了。

图片来自 AK_Dream 的博客↗,侵删。

大骑士领一瞥↗

分析分析还是分析。

做计数题之前一定要分析!

流放阿卡胡拉↗

不自量力。

设我们正在求解 (0,0)→(x,y)(0,0) \to (x,y) 的答案,钦定 x≤yx \le y。

如果有 x=0x = 0,路径只有一条,长度为 y(y+1)2\frac{y(y + 1)}{2}。

其次,如果有 yy 是质数,一定有一条长为 x+yx + y 的路径:(0,0)→(1,0)→(1,1)→(1,2)→⋯→(1,y)→(2,y)→⋯→(x,y)(0,0) \to (1,0) \to (1,1) \to (1,2) \to \dots \to (1,y) \to (2,y) \to \dots \to (x,y)。

再其次,当 xx 是质数时,设 k=⌊yx⌋k = \lfloor \frac{y}{x} \rfloor。如果能在 (kx,y](kx,y] 这个区间中找到一个质数,那么也可以是 x+yx + y 的。

发现直接记搜就能过。还有我的 unordered_map 居然跑的和 map 一样快。

生成字符串↗

太脑电波了点。

设 x=cnt1+cnt0,y=cnt1−cnt0x = cnt_1 + cnt_0,y = cnt_1 - cnt_0,那么就有两种情况:

  • x:=x+1,y:=y+1x := x + 1,y := y + 1:这个数取 11。
  • x:=x+1,y:=y−1x := x + 1,y := y - 1:这个数取 00。

问最后走到 (n+m,n−m)(n + m,n - m) 且不经过 y=−1y = -1 方案数。

考虑总的方案数。那么就是从 n+mn + m 里取 mm 步往下走的方案数,显然是 (n+mm)\binom{n + m}{m}。

考虑不合法的方案数。发现从 (0,0)(0,0) 走到 y=−1y = -1 的方案数是 (0,−2)(0,-2) 走到 (n+m,n−m)(n + m,n - m) 的方案数,为 (n+mm−1)\binom{n + m}{m - 1}。

所以最后的答案就是 (n+mm)−(n+mm−1)\binom{n + m}{m} - \binom{n + m}{m - 1}。

Emiya 家今天的饭↗

老早就看了这道题,一直没做出来。

我们枚举 ii 表示第 ii 种食材的数量 k>⌊n2⌋k > \lfloor \frac{n}{2} \rfloor。转化一下发现 2k+n−j>n2k + n - j > n。发现 n−jn - j 就是没选的点数量,选一个点 2k+n−j2k + n - j 就会 +2+2,不选就会 +1+1。所以我们枚举这行的每个点:aj,ia_{j,i}。有转移:

{dpj,k←dpj−1,k×(sumj−aj,i)不选当前列dpj,k+1←dpj,k不选这个点dpj,k+2←dpj,k×aj,i选这个点\begin{cases} dp_{j,k} \gets dp_{j - 1,k} \times (sum_j - a_{j,i}) & \text{不选当前列} \\ dp_{j,k + 1} \gets dp_{j,k} & \text{不选这个点} \\ dp_{j,k + 2} \gets dp_{j,k} \times a_{j,i} & \text{选这个点} \end{cases}

最后拿总的点减掉 ∑i=1m∑j=n+12ndpn,j\sum_{i = 1}^{m}\sum_{j = n + 1}^{2n}dp_{n,j} 就是了。

后日谈

不自量力。


Thanks for reading!

日记

周三 11月 20 2024
907 字 · 4 分钟