20210615模拟

Day1

T1

(不知道为什么左端点排序,并且std都T了)

看到题就想会不会什么数据结构,确实用了数据结构,不过主体还是dp

一点技巧是,可以把区间左右端点离散化(就是把多余的部分直接卡掉,包含的就是关键点,可能说的比较抽象)

暴力dp转移方程:

dp[i][j] 表示前i个区间里选,前j个关键点被包含的方案数

dp[i][j] = dp[i-1][j](不选当前区间直接继承)

dp[i][r[i]] += dp[i-1][k] (\(l[i]-1\leq k \leq r[i]\)) (选当前区间,之前的情况需要与他有交或者直接相切)

dp[i][k] += dp[i-1][k](\(r[i]+1\leq k \leq m\))(选当前区间之前的情况需要把区间没覆盖的覆盖掉)

只与i-1有关,线段树维护就好了

T3

显然, 对于权值最小的点, 选了它的父亲后一定马上就会选它。

这样我们可以把这两个点合并, 那么每个点现在都是一个二元组 (s[i],t[i]), s[i]表示权值之和, t[i]表示点的个数.

那么两个二元组 i,j 之间也是可以比较的. i 比 j 优的条件就是

\(t[i]\times s[j] > t[j]\times s[i]\)

\(s[i]/t[i] < s[j]/t[j]\)

于是点合并之后也可以用s[i],t[i]作为关键字比较大小. 并查集 + 可删堆即可,但是我写错了,暂时还没有找出来哪里错了

Day2

T2

原来的环不可改变,可改变的只有链。

链可以分成奇链和偶链,偶链跟任何别的链相连他的奇偶性不变,也就是无影响

可以写出转移方程f[x][y] = f[x][y-1]*(x+y) f[x][y]表示有x个奇链,y个偶链的合法方案数

如果我往图里加一条偶链,他可以和x个奇链拼在一起,奇偶链个数不变,方案数为f[x][y-1]\(\times\)x,也可以本身拼成一个环,方案数为f[x][y-1],也可以和偶链拼,方案数为f[x][y-1]\(\times\)(y-1)

那么最后f[x][y] = f[x][0]\(\times\)(x+1)\(\times\)(x+2)\(\times\)……\(\times\)(x+y)

现在问题转化为如何求f[x][0]

此时奇链个数必须是偶数,才会有答案

那么我们每次可以往里加2个奇链

f[x][0] = f[x-2][0]\(\times\)(x-1)\(\times\)(x-1)

两个个奇链都可以和另一个奇链和原来的奇链连

T3

\(n^3\)dp,但是时间复杂度好像是假的,实际最大不超过\(\frac{n+m}{k}\),我记得是这样的

dp[i][j]表示当前长度为i,在A中匹配到第j为,在B中能匹配到的最远位置

和NOIonline有点相似,贪心的想匹配到的越远后面合法的可能越小

那么我们可以预处理出A和B中位置i的下一个k在哪个位置

然后dp[i+1][nxta[j][w]] = max(dp[i][nxta[j][w]],nxtb[dp[i][j]][w])

Day3

T1

最后的答案可以写成这种形式:\(\sum\limits_{i = 1}^n \frac{w_i}{2^i}\)

贪心:w从大往下取

小tips:不取模,还会除以一个数,当这个数很大的时候就可以忽略,所以我们大概找前30大的数就可以

考虑每个数对答案的贡献,他只会对他左边T大数和右边T大数包含的区间有贡献

\(ans = w_i\times \sum\limits_{i = 1}^n \sum\limits_{x = 1}^T\sum\limits_{y = 1}^T (l_{x-1}-l_x)\times (r_y-r_{y-1})\times \frac{1}{2^{x+y-1}}\)

\(ans = 2w_i\times \sum\limits_{x = 1}^T (l_{x-1}-l_x)\times \frac{1}{2^x} \times \sum\limits_{y = 1}^T (r_y-r_{y-1})\times \frac{1}{2^y}\)

T2

水了\(k = 3\)的30,如果不存在大小为3的环,说明原图是个DAG,DAG的数量为n!

好像剩下的还要多项式求逆,可是我不会多项式求逆呀

T3

可以把问题转化为左右括号匹配问题,dp[i][l][r]表示位置i的左边有l个左括号,右边有r个右括号的方案数

那么这些方案对应的贡献就是,ans[i][l][r] += f[i][l][r]\(\times (r-l)^k\)

然后我们就可以\(n^3\)dp就可以了

Day4

刚刚闪退了,导致写的东西全没了!!!!!!

T1

前两个点是高斯消元,按照白点的集合分层高斯消元,但是真正考出来才发现自己高斯消元还没有掌握

个人认为白点比黑点好写,但是同学都认为黑点比白点好写,所以我就只写了白点,拿到了35分(不过我也是几个人最高了,毕竟他们强的都不想写T1)

白点的贡献就是他被经过的概率,和之前某天模拟的T3一样

设f[i]表示从fa[i]到i的概率,g[i]表示从i到fa[i]的概率,之后照常推推式子就出来了

黑点好像是树形dp的一种常规处理,但是我并不会,知识比较欠缺

T2

推了个O(n)的式子,预处理阶乘算组合数,正解看ppt就让人望而生畏啊,不过看到分组就感觉和斯特林数有点关系,但我还是不会

T3

先想了个暴力\(n^3\)dp,然后发现,如果一部分已经不合法,那么前面更不可能,所以可以\(n^2\)往外扩展

这次的部分分拿的比较好吧

posted @ 2021-06-15 15:32  小又又yyyy  阅读(33)  评论(0编辑  收藏  举报