随笔分类 - 数学
摘要:题意:给定一颗树,要求每个点的点权范围是 $[1,D]$ 且权值不大于父亲,求方案数. 显然,即使 $D$ 再大,$n$ 个点也最多只会取到 $n$ 个值. 令 $f[x][i]$ 表示以 $x$ 为根的子树中点 $x$ 取到权值 $i$ 的方案数. 令 $s[x][i]$ 表示 $f[x][i]$
阅读全文
摘要:朴素的DP:$f[i][j]$ 表示选了 $i$ 个数,异或值为 $j$ 的方案数. 转移:$f[i][j]=\sum_{i=1}^{m}f[i-1][k]\times isprime[p]$($p$ 异或 $k$ 等于 $j$) 如果 $n$ 比较小的话可以直接进行 FWT 优化 DP. 然而,这
阅读全文
摘要:有 $2^n$ 名选手,编号为 $1$ 至 $2^n$. 现在这 $2^n$ 名选手将进行 $n$ 轮淘汰赛,决出胜者. 若 $x<y$,则 $x$ 能战胜 $y$. 但是有 $m$ 个例外,1 号选手会输给这 $m$ 个选手,问有多少种初始排列方式使得 $1$ 号点能取得胜利. (每次是 2i v
阅读全文
摘要:看到这道题第一个想法肯定是按照套路钦定一些地方不合法,然后其他地方随便选,最后来一个二项式反演. 但是我们发现这个 DP 状态很难设置. 然后你发现一个非常神的性质:由于题中给的是绝对值,所以说一个位置要是不合法的话,只有两种数值的可能(+k和-k) 然后把位置 $i$ 和值 $i+/-k$ 相连,
阅读全文
摘要:Description Input Output 看到这种恰好的一般就是二项式反演了. 令 $f[i][j]$ 表示考虑糖果前 $i$ 个糖果,恰好比药片大 $j$ 个的方案数.(我们只选了 $j$ 个糖果) 转移的话我们将两个数组分别从小到大排序,这样就非常好转移了. 我们令 $l[i]$ 代表第
阅读全文
摘要:题意:在 $n$ 个数的 $2^n-1$ 个非空子集中选取 $m$ 个,且必须满足: 1. $m$ 个子集两两不同. 2. 每个数在 $m$ 个子集中出现总次数为偶数. 3. 每个子集非空. 令 $f[i]$ 表示选出了 $i$ 个集合且满足了上述 3 条限制的方案数. 直接求 $f[i]$ 比较困
阅读全文
摘要:这个题和那个城市规划几乎是一个套路. 就是钦定一个点,然后枚举这个点所在连通块大小,然后其余部分随便连. 由于我们钦定了一个点,所以我们算的方案数肯定不会重复. 即 $f[S]=TOT(S)-\sum_{T \subseteq S} f(T) \times TOT(S-T)$. code: #inc
阅读全文
摘要:题意: 给定一张图,和这个图的一颗生成树. 求:重新对这颗树标号,有多少种标号方式满足如果一条边 $(x,y)$ 在树中出现的话在图中也出现. 暴力做法:$f[i][j][S]$ 即在以 1 为根的树中遍历到点 $i$,该点映射的点是 $j$,且 $i$ 这颗子树映射的点集是 $S$. 转移的话时间
阅读全文
摘要:现在看来,这道题的 84 pts 随便拿啊. 100 pts 也不是很难,但是考场上太过于紧张加上心理素质不好吧... 84pts 暴力的话设状态 $f[i][j][k]$ 表示决策到第 $i$ 行,枚举的拿了 $j$ 个,其余拿了 $k$ 个. 但是我们把那个不等式拆开后发现其实表示的就是钦定的比
阅读全文
摘要:给定 $n$,求一组合法解,使得 $\frac{1}{x}+\frac{1}{y}+\frac{1}{z}=\frac{2}{n}$ 不妨令 $z=n$,则问题转化为 $\frac{1}{x}+\frac{1}{y}=\frac{1}{n}$ 根据我们在高中学习的 "裂项" 法,可知 $\frac{
阅读全文
摘要:推一推式子后发现每个点不论走几步被访问到的概率都是 $\frac{d_{i}}{2m}$ code: #include <cstdio> #include <string> #include <algorithm> #define N 100070 #define ll long long #def
阅读全文
摘要:推式子没推出来什么特别有用的结论. 看题解后发现这尼玛就是一个大爆搜啊. 以后碰到这种推式子推不出来,或者没啥思路的时候可以考虑爆搜解决. code: #include <cstdio> #include <string> #include <cstring> #include <algorithm
阅读全文
摘要:求:$a^{bx \%p}\equiv 1(\mod p)$ 的一个可行的 $x$. 根据欧拉定理,我们知道 $a^{\phi(p)}\equiv 1(\mod p)$ 而在 $a^x\equiv 1(\mod p)$ 这个式子中 $x$ 是存在很多个解的. 这些解之间存在着循环节,使得任意解 $x
阅读全文
摘要:之前绝对做过几乎一模一样的题,现在做竟然忘了. code: #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; ll n,ans=1
阅读全文
摘要:推到了一个推不下去的形式,然后就不会了 ~ 看题解后傻了:我推的是对的,推不下去是因为不需要再推了. 复杂度看似很大,但其实是均摊 $O(n)$ 的,看来分析复杂度也是一个能力啊 ~ code: #include <bits/stdc++.h> #define ll long long #defin
阅读全文
摘要:思路很巧妙的一道题 ~ 这个应该不完全是正解,复杂度约为 $O(3\times 10^8)$,有时间再研究研究正解. 首先,最裸的暴力是按照权值从小到大枚举每一个数,然后枚举后面的数来更新方案数,是 $O(n^2)$ 的. 然后,我们可以用lucas定理来模拟那个组合数,会发现只需满足大数&小数=小
阅读全文
摘要:如果单点而不是求 sigma 的话还是比较好办的. 遇到这种前缀和相减的矩阵乘法可以增设一个 0 使得后面的能先加到前面,然后再算. 这样的话可以使的最后算出的是前缀和相加的形式. code: #include <bits/stdc++.h> #define ll long long #define
阅读全文
摘要:有一个神奇的技巧——打表 code: #include <bits/stdc++.h> #define N 10000007 #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; in
阅读全文
摘要:自己 yy 了一个动态 dp 做法,应该是全网唯一用 LCT 写的. code: #include <bits/stdc++.h> #define ll long long #define lson tr[x].ch[0] #define rson tr[x].ch[1] #define setIO
阅读全文
摘要:挺神的一道题 ~ 由于两个人选的数字不能有互质的情况,所以说对于一个质因子来说,如果 1 选了,则 2 不能选任何整除该质因子的数. 然后,我们发现对于 1 ~ 500 的数字来说,只可能有一个大于 $\sqrt 500$ 的质因子(两个的话乘积就超过 500 了) 而不大于 $\sqrt 500$
阅读全文

浙公网安备 33010602011771号