2020.7.12 12:00~17:00
43/1116
4/6/10
定义一个字符串的 B 函数为字符串到相同长度非负整数序列的映射,第 $i$ 个整数表示字符串中在 $i$ 前面与 $i$ 字符相同的字符之间的最小距离,如果前面没有和自己一样的字符则记为 0。求每个后缀的 B 序列的排名。字符串只包含a,b两个字母
solve by wxg
两个字符串的B函数如何比较大小呢?
首先,他们的公共前缀字符串的B函数一定是一样的,第一个不一样的字母一定可以比出大小,如果最长公共前缀只包含一个字母,那么和前一个字母不同的串排名小,如果包含两个字母,那么和前一个字母相同的串排名小。
只需要写一个 cmp 函数,用哈希求一下最长公共前缀,然后比一下,之后直接调用 sort 函数即可,注意 ab 和 ba 没有区别,所以我们比较的时候要把字符串首转化为字母相同的串。
一棵无限大的树,每个点$i$与$\frac{i}{mindiv(i)}$连边,其中$mindiv(i)$表示$i$的最小约数,给定每个阶乘点$i!$的权值$w_i$,求由$1到n$的阶乘组成的虚树的带权重心,即求$min_u\sum_{i=1}^nw_i dis(u,i!)$
补题byfyh
题解都说要建一个虚树然后维护啥的,没用那么复杂的做法,方法跟cf#614div2的F有点像
暴力还原出树的路径来,因为阶乘的关系,$i!的路径和(i-1)!只有在i的地方不一样$,所以我们只需要处理每一个$i$的路径即可,用欧拉筛预处理每个$i$的$mindiv(i)$。
现在尝试求$u=1$时候的答案:
首先对于$i<j$,由于都是阶乘,后者都是包含前者的,所以前者怎么走,$(i,n]$区间的都会跟着走,所以$i$每跳一步(设$tmp=i$,$tmp$到$\frac{tmp}{mindiv(tmp)}$一直到1),每走一步累加的权值是$\sum_{k=i+1}^nw_k$,这个用前缀和维护即可。
然后开始考虑从1号节点出发走向哪里使得答案变小,设当前的区间为$[l,r]$,表示我当前点所维护阶乘所在的子树区间,那么每走一步其实就是在看$sum[l,r]和sum[1,l-1]+sum[r+1,n]$的大小关系决定改怎么走,总复杂度$O(nlogn)$
给一个正定对称矩阵$A$,和一个$n$维向量$b$,让你求$n$维实向量,其中满足: $$ \sum_{i=1}^n\sum_{j=1}^nA_{ij}x_ix_j\leq1 \\ \sum_{i=1}^nb_ix_i最大 $$ 求$(\sum_{i=1}^nb_ix_i)^2$的分数形式$P·Q^{-1}mod 998244353$
补题byfyh
题目那个两个求和式子是一个二次型,写成这样的形式: $$ x^TAx\leq1 \\ max\{b^T·x\} $$ 设$a ·(x^TAx)=1$,其中$a\geq1$.
那么设$x'=\sqrt a x,$ 原式即为$(\sqrt a x)^TA(\sqrt a x)=(x')^TAx'=1$
$b^T·x'=b^T·(\sqrt ax)\geq b^T·x$,二次型值一定要为1
故变成: $$ 约束条件:x^TAx=1 \\ 目标函数:\{b^T·x\} $$ 考虑拉格朗日数乘法 $$ L(x_1,\ldots,x_n)=b^T·x-\lambda(x^TAx-1) \\ 对每一个x_i求偏导:\frac{\part L}{\part x_i}=b_i-\lambda\frac{\part x^TAx}{\part x_i}=b_i-2\lambda\sum_{j=1}^nA_{ij}x_j \\ \begin{pmatrix} \frac{\part L}{\part x_1} \\ \ldots \\ \frac{\part L}{\part x_n} \end{pmatrix}=b-2 A·x=\begin{pmatrix} 0 \\ \ldots \\ 0 \end{pmatrix} \\ b=2\lambda A·x \\以下简记2\lambda=\mu \\ x=\frac{1}{\mu}A^{-1}b,带入二次型等于1: \\ \frac{1}{\mu}b^T(A^{-1})^TA\frac{1}{\mu}A^{-1}b=1,其中(A^{-1})^T=A^{-1} \\ 继续化简得\mu=\sqrt{b^TA^{-1}b} \\ 回代入ans=(b^Tx)^2=(b^T\frac{1}{\mu}A^{-1}b)^2=b^TA^{-1}b $$ 求逆矩阵即可,复杂度$O(n^3)$
将两个串无限循环,问是否相等
solved by hxm
容易发现,只需要判断最长串的两个周期内是否相等即可
给定一个网络,每次询问将每条边的容量设置为$\frac{u_i}{v_i}$,问在源点注入1流量,流尽后的最小费用,若流不完输出NaN.
solve by fyh hxm
先考虑无解的情况。$\lceil\frac{v_i}{u_i}\rceil>maxflow$是无解的,因为每一次都是流一次$\frac{u_i}{v_i}$,最多可以流$maxflow$次,如果$\frac{u_i}{v_i}*maxflow$还留不满1显然就是无解。
回忆最小费用最大流的做法,实质就是每次增广之前,在还剩余流量的弧跑最短路,沿着最短路增广,也就是前$k$次增广的费用其实就是前$k$次的最小费用,利用这个性质我们在算最小费用时把每次答案都记录下来即可。
算 $\int^{1}_{0}{(x-x^2)^ndx}$
分部积分即可推出答案为 $\frac{(n!)^2}{(2n+1)!}$
12:00 读题
12:00 wxg说结论,hxm开写
12:30 hxm过F
12:36 推出J wxg过J hxm想出了错误的做法 开写C fyh想I wxg想A
13:10 hxm wa C 放弃C wxg开写A
14:35之前 尝试想B未果,想出H
14:35 wxg 过A fyh写H wxg,hxm想B
15:30 fyh过H