随笔分类 - dp
摘要:T1 大神说是打个表找规律啥的。 我利用生成函数+吉夫特那个题的结论推出来类似的结论。 就是说对于所有深度为$i$的点,其对答案有贡献,当且仅当$t\&i=0$。 这样的话就可以直接用一个$orFWT$来做了。 T2 生成树计数原题。 比原题还简单。 可以把$a_i$抽象成一个点变成一个含有$a_i
阅读全文
摘要:T1 首先设出暴力的$dp$。 $dp[i][j][k][l]$为前$i$个点中有$j$个白点结束方案为奇数,$k$个黑点结束方案为偶数,当前全部的结束方案之和奇偶性为$l$的方案数。 那么可以很简单的转移。 在考虑转移时候的系数。 其实只跟$j,k$是否为0有关系。 那么状态大大化简为: $dp[
阅读全文
摘要:因为没做过数学题。 所以打算先随便找+做几个~~简单~~数学题,再写题解,过段时间再讲。 另:由于我之前讲的数学题难度太大,被多人联名怒喷,广受差评,所以这次的难度大大降低,题太水。 做过的大佬不要大声喷或喊题解,没做过的神秒切不要说题真太水。 本来计划弄10个题,由于本人水平有限,这段时间内过于颓
阅读全文
摘要:T1 仓鼠讲的$dp$嵌套原题。 考虑对于一个确定的$T,V$如何$check$合法。 设$dp[i][a][b][c][d]$为最高的前$i$位,$x$是否触及上界/下界,$y$是否触及上界/下界。 那么我们把这个状态压一下。 设$dp[i][S]$为所有可以由状态的集合$S$得到的$V$的个数。
阅读全文
摘要:T1 我们可以考虑最小割树的逆过程。 然后根据最小割情况复原出最小割树。 每次找到当前集合中最小的割。 然后用并查集链接割大于最小的割的情况。 这样就可以做到分割两个集合了。 递归下去判断是否有解即可。 T2 考虑做树形$dp$。 设: $f[x][i]$为$x$的子树中经过了$i$个点直径的一个端
阅读全文
摘要:看了几个课件,挑着比较有意思的写了。 1. 倒推期望,设$dp[i][j]$为已经有$i$行$j$列有至少一个被染色的,还需要染的次数的期望。 那么有$dp[n][n]=0$,倒推到初始状态即可。 有: $$dp[i][j]=\frac{ij}{n^2}dp[i][j]+\frac{(n i)j}{
阅读全文
摘要:T1 看起来是个状压$dp$。 设$dp[i][j][S]$为前$i$行,放置了$j$个哲学家,第$i$行放的情况是$S$的方案数。 那么对于两个状态,能否由上一行转移到这一行会存在一些判断,这些判断暴力写一写就行了,也不是很恶心。 对于两个状态能够转移的话$s_1\rightarrow s_2$,
阅读全文
摘要:好像又是宿命的毒瘤出题人王队长的题(WC被他的题灭了)给跪了。 T1 我们可以做一个分裂的操作。 每次找到当前区间右端点所连边的最小值,那么这个肯定是对应了某一个位置$x$。 同时又有$x\equiv r\ (mod\ mid)$,所以$mid 1\equiv r x 1\ (mod\ mid)$。
阅读全文
摘要:T2强制在线挂了qvq,结果是因为初值写错了,T3数组开小掉了10pts 其他倒还好。 T1 秀最靓的操作,写最短的代码。 其实就是我们按照$kruscal$考虑的话,我们可以把最小生成树上的边都列出来。 这是一个单调不讲的序列。 把最后一个和前面$n 2$个分别考虑,然后一个一个的削减$w[n 1
阅读全文
摘要:毒瘤全家桶。 T1 考试的时候打的差一个符号就有70了qwq。 我们把直线交矩形框的点都找出来。 然后按照矩形的重心为原点进行极角排序。 对于一条直线来说。 设两个端点的角度分别是$a_x,b_x$,那么我们令$a_x<b_x$。 这样两条直线相交的条件就是: $$a_x\leq a_y\leq b
阅读全文
摘要:Bitwise Xor 我们可以发现一个序列中的最小的异或值是两个大小相邻的数的$xor$取$min$。 那么我们对序列排序。 只需要计算相邻的$xor$是大于等于$k$的方案。 $dp[i]$是以$i$结尾最小$xor$大于$K$的方案。 然后我们可以类似于用树状数组来搞最长升降转移。 这次用$t
阅读全文
摘要:一堆树。。 1.Codechef CUTTREE 有序点对$(x,y)$如果联通,就对答案造成1的贡献。 只需要求出第$i$天期望联通的点对的个数。 $(x,y)$对第$i$天的贡献就是:$\frac{(n 1 dis(x,y))^{\underline{i}}}{(n 1)^{\underline
阅读全文
摘要:好难啊。 改的也好难。 T1 联赛题。 我们发现$k$次冒泡排序之后,一个元素最多向左走$k$步。 那么对于$\forall i\in[1,k+1]$维护$a[i]$的最小值。 那么排序后的$a'[1]$为这段的最小值。 然后维护$[1,k+2]$的,这些的最小值是$a'[2]$的值。 以此类推。
阅读全文
摘要:T1 dy讲的原题。 建议去翻$DC$大神的$dp$视频课。 T2 结论题。 一种想法是抽象为一个$ans+1 n$的矩阵。 每次从上面一段连续区间向底层走。 维护每一个位置最高的高度是多少就可以得到答案了。 这里用一个队列实现。 每一个位置的队列长度可以用来更新答案。 T3 生成函数题。 考虑容斥
阅读全文
摘要:T1 任意时刻棋子不会互相干扰。 那么我们直接做一个费用流模型。 然后用$ZKW$费用流给他搞上就行了。 T2 设$dp[l][r][h]$为区间$[l,r]$中$h$以下的点全都被覆盖的最小矩形数。 然后枚举中间点来更新。 同时把覆盖整个区间的情况给转移到位。 从左右分别指针扫到比当前最高高度更高
阅读全文
摘要:刷了一下,写一下。 T1. 天天爱射击 可以这样想。 我们二分一下每一块木板在什么时刻被击碎。 然后直接用主席树维护的话是$O(nlog^2n)$的。 会$T$,而且是一分不给那种。。。 那么换个想法,既然都用主席树了,还二分啥。 可以直接主席树上查区间排名。 似乎也可以整体二分。 复杂度$O(nl
阅读全文
摘要:我淦了这个T3 T1 考虑模意义下解方程。 我们对每一个点列一个方程。 可以列出$n 1$个,另外一个加不加是一样的,因为可以用$n 1$个来表示$n$个。 那么建树。 剩下的$m (n 1)$条边和树边可以构成$m (n 1)$个环。 然后可以列出来剩下的$m (n 1)$个方程。 总共$m$个方
阅读全文
摘要:T3恶心死我了写了182行4.6K。 T1 联赛状压题。 我们发现$m$很小,那么状压。 设$f[i][j][S]$为第$i$个元素使用了$S$集合中的操作之后大小为$j$的概率。 那么我们可以写出转移方程。 $$f[i][j][S]=\sum\limits_{k\in S}\sum\limits_
阅读全文

浙公网安备 33010602011771号