2019.7.8海亮暑假集训Day3考试总结

博客主要分享三道题的解题思路。T1用dfs暴力可解;T2作者给出题解并分析四种情况;T3作者起初想分块,正解是倍增,介绍了用f[i,j]计算及询问复杂度等思路。

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

对于代码和题目详见百度网盘,这只讲思路。

T1,显然是一个dfs暴力就可以过,但是我的YES小写了

  沉默两秒..........

T2,这一道题我要好好讲讲(下面是我写的题解)

下面有四种情况

看懂了吗(看懂了!!),还是挺好理解的(可是考试时候还是推不出来啊)

T3,这一题我一开始想的是分块(因为下午要讲的是分块,所以我就没多想),后来正解竟然是倍增(说实话,我的倍增除了写了lca外,其他的一概不知),我们用f[i,j]表示从位置 i 开始,选择 2^j 条线段, Ri 最大的线段 Ri 最小是多少。显然所有
的 f[i,j]可以在 O(nlogn)的时间内计算出来

询问时我们从 x 开始,从大到小枚举 k,如果选择 2^k 条线段后没有超出区间的范围,那么答案加上 2^k,然后继续统计 f[x,k]+1~y 这段区间的答案。这样单次询问复杂度是 O(logn)的,询问的总复杂度是 O(Qlogn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值