摘要:
题目 这个题的输入首先就是一棵树,我们考虑一下点分 我们对于每一个分治重心考虑一下跨过这个分治重心的连边情况 就是把当前分治区域内所有的点向距离分治重心最近的点连边 考虑一下这个算法的正确性,如果我们已经对一个联通块内部形成了一个\(mst\),我们需要把这个联通块和另外一个联通块合并 如果这个新的 阅读全文
摘要:
"题目" 只会$O(2^nn^2)$的暴力子集卷积啊 首先第一反应是算贡献,我们先求出每一个子集的子集和$sum_i$,之后考虑$i$这个子集在多少种排列中成为了最大前缀和 由于一个排列的最大前缀和可能有好几个,于是我们强行规定最大前缀和为最大且出现位置最靠前的前缀和 如果我们能求出一个$dp_i$ 阅读全文
摘要:
"题目" 显然不小于$n$这个东西我们不是很好搞,考虑正难则反,求出有多少条路径小于$n$,之后拿$C_{n+m}^m$一减就好了 于是状态为$dp[i][j][k]$表示到$(i,j)$这个格子累计乘积为$k$的路径数,转移显然 但是一看就是过不了的级别 于是我们不存到现在的乘积是多少了,我们改成 阅读全文
摘要:
"题目" 组合数大模拟,没什么好说的,注意一下$0$的特判 还有我现在码力真的差 代码 cpp include include include include define re register const int maxn=100005; const int mod=998244353; inl 阅读全文
摘要:
存板子,这玩意死难写好像也没啥用啊 不想学CH定理了,等以后学了再来补一下原理吧 cpp include include include define re register inline int read() { char c=getchar();int x=0,r=1;while(c'9') { 阅读全文
摘要:
"题目" 潮考我的题,之后我就给秒了 显然这个数据范围很是区间$dp$,我们设$dp[i][j]$表示把区间$[i,j]$染成目标颜色的最小花费 首先初始化显然$dp[i][i]=1$ 区间$dp$的常规套路显然,枚举断点$i\leq k include define re register def 阅读全文
摘要:
"题目" 首先看到这个出现长度至少为$2$的回文子串 这就等价于不能出现两个连续且相同的字符 于是我们用概率生成函数来搞 设$g_i$表示$i$次操作后游戏没有结束的概率,$f_{i,j}$表示$i$次操作之后出现最后两个字符都是$j$的概率,这样的话游戏就结束了 再定义$f_i=\sum_{j=1 阅读全文
摘要:
"题目" 神仙题啊神仙题 显然这个东西一脸不可求的样子啊,这种东西我们显然需要搞一个容斥什么的 于是设$g_i$表示至少存在$i$个联通块(联通块内部的边没有要求,联通块和联通块之间不存在边)的方案数,$f_i$表示恰有$i$个联通块 有 $$g_x=\sum_{i=x}^n\begin{Bmatr 阅读全文
摘要:
"题目" 概率生成函数牛逼! 显然我们还是先设些生成函数出来 设$f_{i,j}$表示第$i$个人在第$j$次抛硬币之后获胜的概率,$g_i$表示第$i$抛硬币之后无人获胜的概率,对应的生成函数分别是$F_i(x),G(x)$ 先明确一下我们要求的东西就是$F_i(1)$ 非常显然的有$g_i=g_ 阅读全文
摘要:
"题目" 显然这个题的期望就是逗你玩的,我们算出来总贡献除以$nm$就好了 设$ans_t=\sum_{i=1}^n\sum_{j=1}^n(a_i+b_j)^t$ 二项式定理展开一下 $$ans_t=t!\sum_{i=0}^t\frac{\sum_{j=1}^na_j^i}{i!}\frac{\ 阅读全文