没用算法颓废记录

都是这辈子都用不到的算法,就当颓废了(

线性规划与网络流的转化

\((u,v,c_{uv},w_{uv})\) 表示流量上界,代价。

\(b_u\) 表示流量需求,即流出减流入至多是 \(b_u\) (相当于连源点 or 汇点)

费用流得到的结果是:(所以如果问题答案是后面的 min 形式就能做)

\[-\min \left\{\sum_{u} b_{u} p_{u}+\sum_{u v} c_{u v} \max \left(0, p_{v}-p_{u}-w_{u v}\right)\right\} \]

ZJOI2013 防守战线:

\[\min p_{i}\left(C_{i}-C_{i+1}\right) \]

\[p_{i+1}-p_{i} \geq 0 \]

\[p_{R_{i}}-p_{L_{i}-1} \geq D_{i} \]

\[\sum_{v} p_{v}\left(C_{v}-C_{v+1}\right)+\sum_{v} \infty \max \left(0, p_{v}-p_{v+1}\right)+\sum_{i} \infty \max \left(0, p_{L_{i}-1}-p_{R_{i}}+D_{i}\right) \]

照着连边就行了。

AGC 043 F :

装盒一定是重量从小到大。将同一家店的珠宝按重量排序,设 \(X_{i,j}(0\le j\le K_i)\) 表示前 \(j\) 个重量取这么多个。

\[\min\{\sum_{i,j}(\infty\max(X_{i,j}-X_{i,j+1},0)+\infty\max(X_{i,j+1}-X_{i,j}-C_{i,j},0)+P_{i,j}\max(X_{i,j+1}-X_{i,j},0)) \]

\[+\sum_{u,v,w,j}\infty\max(X_{u,j}-X_{v,k},0)+\sum_i(\infty X_{i,0}+\infty\max(X_{i,0}-X_{i,k_i}+A,0))\} \]

\(X_{i,0}\) 是无限制的点,可以看做:连向 \(X_{i,0}\) 的是连向 \(T\)\(X_{i,0}\) 连出的是 \(S\) 连出。跑最小费用流。

发现答案式子是 \(\min(A\times flow - C)\)\(C\)\(A\) 为 0 的费用。

那么和 CF1307G 一样搞二分斜率就好了。

BEST 定理

欧拉回路数量,没有起点:

\[T_x\prod_{i}(\deg_i - 1) \]

\(T_x\) 表示 x 为根的树形图数量。(就是原图的生成树数量)

[UR#15]B

析合树

这篇博客越来越阴间了...

CF1205F

全局平衡二叉树

以前学过的东西了。。大体思路是,把每一条重链建成一颗二叉树(相当于把 LCT splay形态固定下来),然后暴力跳 fa。

保序回归

(建议看论文。)

点集 \(U\)\(L_p\) 均值 为 满足 \(\sum_{i\in U} w_i|y_i-k|\) 最小的 \(k\) (让一个集合取的值一样,代价最小。)

求解一条链的保序回归问题可以贪心。

如果 \(y_i > y_{i+1}\) 那么一定有 \(f_i = f_{i+1}\) ,贪心维护栈,不断合并相同值的段即可。

整体二分的求解做法

考虑一个新问题:假设要求 \(f_i\in[L,R]\)。固定 \(L,R\) ,每个点必须取 mid 或者取 mid+1,最小化代价。

通过这个问题的最优解,把取 \(mid\) 的递归进 \([L,mid]\) ,取 \(mid+1\) 的递归进 \([mid,R]\) 继续求解。

怎么解这个问题呢,相当于 有要求 \(f_i < f_j\) 时,\(f_i\)\(mid+1\)\(f_j\) 就不能取 \(mid\),可以转为最大权闭合子图问题。

d1t3 魔法商店

猜个不会证的结论

\(A\) 中的某个元素换成另一个,如果还满足,权值就要满足一个大小关系。\(B\) 也同理。于是就变成了保序回归。

[HNOI2019] 序列

是第一种贪心做法的例题了。

L2 问题的话,均值要取:\(\dfrac{\sum w_iy_i}{\sum w_i}\) (加权平均数)

处理出左边和右边的单调栈。

最后肯定是:修改的 \(x\) 与某段 \([L_0 ,R_0]\) 划成一段。

如果知道 \(R_0\) 那么可以在左边的单调栈里二分 \(L_0\)

\(R_0\) 套在外面二分,就可以了,两 log。

单调栈可以预处理出来然后回退。

数论函数相关

【ULR #1】校验码

多项式相关

咕咕咕。不想学多项式

单纯型法

线性代数

CF1540E

设转移矩阵: \(A_{i,j} = j[j=i,j\in S_i]\)

\(e_i\) 为只有第 \(i\) 项为 \(1\) 的列向量。

想要求: \(\sum_{k\ge d_i} A^{k-d_i}e_ia_i\)


A 有 \(n\) 个特征值,为 \(1\sim n\),设特征向量为 \(v_i\),(根据定义),\(Av_i = iv_i\)

设能构造矩阵 \(c_{i,j}\) 满足 \(e_i = \sum c_{i,j}v_j\) (可以矩阵求逆得到)

答案式子变成:

\[\sum A^{k-d_i} \sum c_{i,j}v_ja_i \]

\[\sum a_i \sum A^{k-d_i}v_{j}c_{i,j} \]

\[\sum a_i \sum j^{k-d_i}v_{j}c_{i,j} \]

(我们利用了特征值把一整个转移矩阵搞没了,变成了数,于是就好处理了。)

由于查询是 \([l,r]\) :可以预处理每个 \(v_j\) 的前缀和,能得到 \(v_{j,[l,r]}\)

维护 \(s_j = \sum a_i c_{i,j} j^{-d_i}\) ,由于要 \(k\ge d_i\) 才能统计进来,所以要开 \(n\) 个树状数组维护一下。

[ULR #2] 跳蚤猜密码

\(e_{i,j}\) 为单位元。

使用 \(n^2+1\) 次询问:\(\det (A+e_{i,j}) = \det A + M_{i,j}\)\(M_{i,j}\)\((i,j)\) 位置的代数余子式(去掉 \(i\)\(j\) 列的 det \(\times (-1)^{i+j}\)

伴随矩阵:\(A^{*} = \frac{1}{\det A}A^{-1}\),有定理:\((A^{*})_{i,j} = M_{j,i}\) 。于是可以求出 \(A^{-1}\)

如何卡掉一次询问:

不问 \(M_{1,1}\)

\(\det(A^{*}) = (\det A)^{n-1}\)\(M_{1,1}\) 不为 0 时可以在 \((1,1)\) 处填入 \(0,1\) 求 det 来解出 \(M_{1,1}\)

CF736D

基本就是套上面伴随矩阵的知识就能解决了...

一些奇怪的随机题

[ ]

杨表

咕咕咕

posted @ 2021-12-06 19:02  Rainbow_qwq  阅读(82)  评论(0编辑  收藏  举报