首页 > 其他分享 >2025.1 做题记录

2025.1 做题记录

时间:2025-01-17 23:32:21浏览次数:1  
标签:每位 le 2025.1 记录 卷积 sum FWT 复杂度

A. 环覆盖

条件等价于每个点度数都是偶数,不难写出恰好保留 \(k\) 条边时的答案:

\[[x^{\varnothing}y^k] \prod_{(u, v)} (1 + x^{\{ u, v \}} y) \]

其中 \(x\) 这一维是 xor 卷积,\(y\) 这一维是加法卷积。

考虑经典套路,\((1 + x^S y)\) FWT 之后每位都是 \((1 \pm y)\),乘起来之后每一位就都是 \((1 - y)^k (1 +y)^{m - k}\) 的形式,这个可以 \(O(m^2)\) 预处理出来。

对 \(\sum_{(u, v)} x^{\{ u, v \}}\) 进行 FWT,然后解一下方程就知道每位有几个 -1 了,然后就能知道 FWT 之后的数组了。

最后可以通过 FWT 的定义式求出答案,这样是 \(O(m2^n + m^2)\) 的。

然后发现本质不同的只有 \(O(m)\) 个,所以记一下每种有多少个就可以 \(O(n2^n +m^2)\)。

对于 FWT 的过程,发现枚举集合 \(S\) 之后要算的就是有多少条边恰好一个端点在 \(S\) 中,每加一个点 \(u\) 的时候只有与 \(u\) 相连的边会由变化,可以状压维护,这样就是 \(O(2^n +m^2)\) 的了。

H - Nim Counting

答案即为:

\[\sum_{S \neq \varnothing} [x^S] \sum_{1 \le k \le n} \left( \sum_{1 \le j \le n} x^{A_j} \right)^k \]

由于 FWT 是线性变换,所以 FWT 之后对每一位都这么做,然后 IFWT 回去。

时间复杂度 \(O(n 2^n)\)。

D. Jzzhu and Numbers

答案为:

\[[x^{\varnothing}] \prod_{1 \le i \le n} (x^{U} + x^{\{ a_i \}}) \]

其中乘法是 and 卷积。

发现 \((x^U + x^{\{ a_i \}})\) FWT 之后每位只会是 1 或 2,所以可以算出 \(\sum x^{\{ a_i \}}\) 的 FWT 数组后解方程得到。

然后 IFWT 回去即可。

时间复杂度 \(O(n2 ^n)\)。

C. Binary Table

考虑枚举行的状态,那么列就是 0 和 1 哪个少填哪个。

答案是 xor 卷积的形式。

G - 3^N Minesweeper

考虑 \(B \rightarrow A\) 的过程,实际上就是每位乘了个矩阵。

类似于 FWT,\(A \rightarrow B\) 就是每位乘上它的逆矩阵。

Ex - Distinct Multiples

进行互不相等容斥,对于一个集合 \(S\),它的容斥系数是 \((-1)^{\lvert S \rvert - 1}(\lvert S \rvert - 1)!\),方案数是 \(\left\lfloor\dfrac{m}{\operatorname{lcm}_{i \in S}(d_i)}\right\rfloor\)。

然后需要把每个集合组合起来,这个是集合幂级数 exp。

时间复杂度 \(O(n^2 2^n)\)。

P5406 [THUPC2019] 找树

首先最优化是假的,可以求出每种边权的方案数。

然后把每条边看成 \(x^{v_i}\) 之后做一遍 matrix-tree 即可。

求行列式的时候可以先把矩阵中的每个位置 FWT 过去,然后对每一位算行列式,最后 FWT 回去。

时间复杂度 \(O(n^3 2^w)\)。

标签:每位,le,2025.1,记录,卷积,sum,FWT,复杂度
From: https://www.cnblogs.com/definieren/p/18677012

相关文章

  • 【洛谷训练记录】【LGR-213-Div.4】洛谷入门赛 #31
    训练情况赛后反思模拟题差点红温,差一道字符串模拟题AKA题问一个数\(a\)加多少后的个位数变成\(b\),取出\(a\)的个位数,再用\(b\)去减,如果小于零答案再加十。#include<bits/stdc++.h>//#defineintlonglong#defineendl'\n'usingnamespacestd;voidsolve()......
  • [20250117]记录下21c下使用gdb跟踪逻辑读遇到的问题.txt
    [20250117]记录下21c下使用gdb跟踪逻辑读遇到的问题.txt--//在21c下使用gdb跟踪逻辑读遇到的问题,困扰好几天,做一个记录。--//首先我以前写过1个gdb脚本跟踪逻辑读在11g下,使用遇到一些问题,发现21c下没有使用kteinpscan,kdifxs函数。--//我先注解这部分内容,测试看看。1.环境:SCOTT@boo......
  • 【做题记录】csp2025-搜索,折半搜索专题
    A.「NOIP2009」靶形数独暴搜。本着搜索必剪枝的思想,略微做一点优化:优先搜索\(0\)少的行。然后就搜就行。Code#include<bits/stdc++.h>#definelllonglong#defineilinlineusingnamespacestd;namespaceasbt{namespacecplx{boolbegin;}namespaceIO{ const......
  • 2025.1.16——1200
    2025.1.16——1200Q1.1200Youaregiven\(3\)integers—\(n\),\(x\),\(y\).Let'scallthescoreofapermutation\(^\dagger\)\(p_1,\ldots,p_n\)thefollowingvalue:\[(p_{1\cdotx}+p_{2\cdotx}+\ldots+p_{\lfloor\frac......
  • Shell技巧记录
    中括号判断用"="if[[${pkg}=p]];then获取文件名后缀suffix=${pkg##*.}grep使用正则表达式"-E"adbdevices|grep-E"device$|unauthorized|offline"|grep-E-n"device$|unauthorized|offline"if比较使用正则表达式if[[${device}=~${patt......
  • Android10 Android TV Launcher(ATV) 启动时间优化记录
    为什么要优化?        都是ATV的情况下,H313的开机到桌面时间耗时40S左右,而且开机动画结束后会黑屏很多秒(10S)左右。同一个板子,同一个主控的情况下,ATVLauncher的启动时间比自定义的Launcher启动时间久。同样开机动画结束后会黑屏一段时间,而自定义的Launcher开机动画......
  • node.js Koa框架学习记录2
    在上一篇文章我们初步学习了写一个简单的接口,这次对目录结构以及统一数据格式,异常错误的处理目录结构优化:前端请求方法错误,我们可以通过在app.use(router.routes())后面追加一个use,告诉前端请求方法错了,而不是404Notfound:app.use(router.routes()).use(router.allowedMe......
  • 【vjudge训练记录】大一寒假专项训练——字符串
    训练情况A题第十届中国大学生程序设计竞赛(济南)-(CCPC2024-Jinan)签到题我们取第一行第一个和后面的进行比较,如果不同的次数超过1次,就说明第一行第一个是不同的那个,如果不同的次数刚好为1次,比较的那个字符串是不同的那个。#include<bits/stdc++.h>#defineintlonglong#defi......
  • 【代码随想录】刷题记录(105)-打家劫舍
    题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况......
  • 【代码随想录】刷题记录(103)-整数拆分
    题目描述:给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k>=2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积 。 示例1:输入:n=2输出:1解释:2=1+1,1×1=1。示例 2:输入:n=10输出:36解释:10=3+3+4,3× 3× 4=......