2019.8.1~2019.8.4

T1

https://jzoj.net/senior/#main/show/1669

暴力你可以考虑费用流或者KM。

考虑一种贪心是按照权值从大到小排序,每次加进去时把之前加入过的拉出来排序判断是否可以加入。具体可以用一个堆来维护。基于这样的贪心是显然正确的。

时间复杂度有一个log,且常数很大,考虑优化。

引入“活跃点”,可以把所有区间按照 l l l第一关键字, r r r第二关键字进行排序,每次令 x = m a x ( x + 1 , l i ) x=max(x+1,l_i) x=max(x+1,li),一个新 x x x就是一个活跃点。则最后被选中的点一定是在活跃点这个集合中。证略。

于是我们可以类似上面的贪心,先按权值排序,然后再考虑 贪心 + 匈牙利 的方式。对于一个区间,我们先从它能包括的最小的活跃点开始搜,然后依次匹配。但这样的时间复杂度依然比较大。

继续优化,可以发现,如果你想把另外一个点给匹配掉,那么另外一个点对应的 r r r要比当前点的 r r r要远,否则你不必匹配,只需找下一个活跃点。这样的时间复杂度就很优了。

T2

https://jzoj.net/senior/#main/show/1895

裸的SG函数题。以某点位根的子树的 S G SG SG值是其所能到达所有后继局面的 S G SG SG值的 m e x mex mex。对每个点求出它能到达的后继局面的 S G SG SG值。则一个点的 S G SG SG可以由其儿子的后继局面转移过来。

树高有限制,所以是 O ( n L ) O(nL) O(nL)的。

T3

https://jzoj.net/senior/#main/show/1656

考虑一条链的做法,可以由一个点向其跳跃点连一条长度为 1 1 1的边,以及其前后连一条长度为 1 1 1的边,只需注意 1 1 1不能向 2 2 2连边,然后BFS即可。

转化到树上,可以看出其实长度变为深度而已。那么处理出BFS序,发现一个点能跳跃到的点是BFS上的一段连续区间,于是可以很容易的求出它的连续区间的起点,然后并查集一下即可。

T4

https://jzoj.net/senior/#main/show/1897

考虑从上往下放。每次必然是把这本书的右端点放在之前所有书的重心处。问题变成求调和级数。

有这样一个式子 lim ⁡ n → ∞ ∑ i = 1 n 1 i = ln ⁡ ( n + 1 ) + γ \lim\limits_{n\to\infty}\sum\limits_{i=1}^n\frac{1}{i}=\ln{(n+1)}+γ nlimi=1ni1=ln(n+1)+γ

其中 γ γ γ是欧拉常数,约等于0.5772156649。

它的严格定义是这样的
在这里插入图片描述
于是有 ∑ i = 1 n 1 i = ∫ 1 n + 1 1 [ x ] d x = ∫ 1 n + 1 1 x + ∫ 1 n + 1 ( 1 [ x ] − 1 x ) = l n ( n + 1 ) + γ \sum_{i=1}^n\frac{1}{i}=∫_1^{n+1}\frac{1}{[x]}dx=∫_1^{n+1}\frac{1}{x}+∫_{1}^{n+1}(\frac{1}{[x]}-\frac{1}{x})=ln(n+1)+γ i=1ni1=1n+1[x]1dx=1n+1x1+1n+1([x]1x1)=ln(n+1)+γ

然后考虑如何近似求 γ γ γ,可以直接根据它的定义式,每次把 x + 0.0001 x+0.0001 x+0.0001保证精度。

T5

https://jzoj.net/senior/#main/show/1898

容斥,然后把矩阵乘法改成DP倍增即可。

T6

https://jzoj.net/senior/#main/show/3538

费用流 或 KM + 三分。

KM要加slack优化,不然T飞的。

T7

因为直接推带着个无穷级数,不妨先不考虑。

考虑每个点受到的总伤害,于是一个点的总伤害总会转移给它能转移的点,这样列出方程就可以求出来总伤害。然后考虑最后乘上它能转移出去的伤害就可以了。因为这是总伤害了,所以可以直接算出来它转移之后还剩百分之多少,乘上即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值