2019牛客暑期多校训练营(第四场)

本文深入探讨了竞赛编程中的多项核心技巧,包括线性基求交的高效算法、树hash在树DP中的应用、以及使用merge-splittreap解决特定问题的方法。文章还提供了实战案例解析,如Ameeting、Bxor、DtriplesI等题目的解题思路和代码实现,适合竞赛编程爱好者和初学者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RankSolvedABCDEFGHIJk
42/6976/11OØOOØØØ.OOO

O: 当场通过

Ø: 赛后通过

.: 尚未通过

A meeting

solved by viscaria&chelly


chelly’s solution

B xor

upsolved by chelly


chelly’s solution

这里主要是线性基求交,这里说下线性空间怎么求交。

222组基{a1,a2,...,an}\{ a_1,a_2,...,a_n \}{a1,a2,...,an}{b1,b2,...,bm}\{ b_1,b_2,...,b_m \}{b1,b2,...,bm}
暴力的想法:我们找出所有满足k1ax1+k2ax2+...+kpaxp=k1′by1+k2′by2+...+kq′bxqk_1a_{x_1}+k_2a_{x_2}+...+k_pa_{x_p}=k'_1b_{y_1}+k'_2b_{y_2}+...+k'_qb_{x_q}k1ax1+k2ax2+...+kpaxp=k1by1+k2by2+...+kqbxqk1ax1+k2ax2+...+kpaxpk_1a_{x_1}+k_2a_{x_2}+...+k_pa_{x_p}k1ax1+k2ax2+...+kpaxp,将它们丢到交空间中,对它们求一组基就是答案。
我们构造一个基allallall,初始为{a1,a2,...,an}\{ a_1,a_2,...,a_n \}{a1,a2,...,an}
依次考察b1,b2,b3,...,bmb_1,b_2,b_3,...,b_mb1,b2,b3,...,bm

  • 对于bib_ibi,若其不能被allallall线性表示,那么将其加入allallall,于是allallall变成了{a1,a2,...,an,bj,...,bi}\{a_1,a_2,...,a_n,b_j,...,b_i\}{a1,a2,...,an,bj,...,bi}
  • 对于bib_ibi,若其能被allallall线性表示,那么可以求出它的表示:k1ax1+k2ax2+...+kpaxp+kp+1by1+kp+2by2+...=bik_1a_{x_1}+k_2a_{x_2}+...+k_pa_{x_p}+k_{p+1}b_{y_1}+k_{p+2}b_{y_2}+...=b_ik1ax1+k2ax2+...+kpaxp+kp+1by1+kp+2by2+...=bi。移项之后,左边变成只有aaa的,右边变成只有bbb的,我们就可以把这个k1ax1+k2ax2+...+kpaxpk_1a_{x_1}+k_2a_{x_2}+...+k_pa_{x_p}k1ax1+k2ax2+...+kpaxp加入到交空间中。

对交空间高斯消元求基即可。

C sequence

solved by chelly


chelly’s solution

D triples I

solved by chelly&viscaria&vegetablest


chelly’s solution

E triples II

upsolved by viscaria


viscaria’s solution

F merge

upsolved by chelly


chelly’s solution

注意到l=1,所以用merge-split treap直接暴力维护即可。因为每次额外的合并操作总会使得段数增加,而段数最多就nnn段,所以时间复杂度均摊是O((n+q)logn)O((n+q)logn)O((n+q)logn)。若l不是1,那么时间复杂度就不对了,可能会带来段数的额外减少。

G tree

upsolved by chelly


利用树hash来表示一个树。注意到不超过12个点的本质不同的有根树数量不是很多,可以直接在原树上树dp。
dp[u][i][hash]dp[u][i][hash]dp[u][i][hash]表示以uuu为根的子树中,以uuu为根且大小为iii的哈希值为hashhashhash的子树的个数。转移类似树上背包的转移。
对于每个询问,可以枚举根,得到所有可能的有根树,然后把dp值加起来即可。

H RNGs

unsolved


I string

solved by chelly


chelly’s solution

J free

solved by viscaria&chelly


chelly’s solution

K number

solved by chelly


chelly’s solution

Dirty Replay

  • J题超时了一发,原因是没有正确重载priority_queue的比较符
  • C题WA了一发,T了一发。WA的原因是并查集合并的时候忘记合并了并查集(大雾。T的原因是线段树带了个logloglog,所以T了。(可是明明别人log就不超时 TVT)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值