日记

日记

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

纳西妲生日快乐

Black and White

太简单了不讲。

函数调用

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

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

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

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

我们发现显然 +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) 的答案,钦定 xyx \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=yxk = \lfloor \frac{y}{x} \rfloor。如果能在 (kx,y](kx,y] 这个区间中找到一个质数,那么也可以是 x+yx + y 的。

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

生成字符串

太脑电波了点。

x=cnt1+cnt0,y=cnt1cnt0x = 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:=y1x := x + 1,y := y - 1:这个数取 00

问最后走到 (n+m,nm)(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,nm)(n + m,n - m) 的方案数,为 (n+mm1)\binom{n + m}{m - 1}

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

Emiya 家今天的饭

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

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

{dpj,kdpj1,k×(sumjaj,i)不选当前列dpj,k+1dpj,k不选这个点dpj,k+2dpj,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=1mj=n+12ndpn,j\sum_{i = 1}^{m}\sum_{j = n + 1}^{2n}dp_{n,j} 就是了。

后日谈

不自量力。


Thanks for reading!

日记

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