「2019.8.5 考试」反复琢磨

非常棒的一套题。

总的来说大体策略没有什么大的失误,就是T1T2挂的有点惨。

这几道题的思路都非常棒!

题解:

T1:其实发现先行乘还是列乘无关紧要,那就先处理列,然后记录下每一列的系数,这样可以通过第一列来找出下面几列的和,然后乘上行系数统计答案即可。

 

T2:考场上写了个倍增,但是挂掉了,事实证明倍增不是错的,但是我用了更强悍的线段树来维护修改操作从而A掉了这道题。

具体来说,可以把走一步当作一个置换,那么我们就有m个置换,每个置换里面有n个元素,用线段树维护置换,用nlogn的时间得到某一个区间内的置换,之后元素通过这个区间的答案也可以快速统计,这样修改和查询都是nlogn的(因为每个置换有n个元素)。

 

T3:线段树扫描线的思想,如果我们按照点对来分别进行操作,每个点的初值赋为他的下标,如果一个点的前趋或者后继在他的前面,那么区间(1---前趋/后继)+1,这样维护之后,发现每次扩展一个右端点之后,如果某个点的权值等于当前扩展的r,那么这个点到r是一个优美区间。为什么呢?其实找前趋后继相当于是找值上相邻的点对,而这些点对对前面的作出贡献,全职等于r的点被贡献了r-l次,也就是说他们之间有r-l个相邻点对,所以他们是一个优美区间。

关于统计答案。我们发现两个优美区间的交还是优美区间,那么其实我们需要找的是某个区间的右边的某个点(是某个最短优美区间的右端点,可以包住这个区间)。换成线段树的语言就是,区间左侧最靠右的值为右边当前扩展点的节点下标。因此就可以按照右端点排序,每次加入新操作,操作压堆按照左端点大根堆,这样可以保证堆顶不成立的情况下,堆底元素也必然不会被更新答案。

 

T2的思路反复琢磨了很久,重构了一次,总之虐的我很难受,然而最近才发现一个道理。

 

  反复琢磨出什么不重要,反复琢磨才重要。

转载于:https://www.cnblogs.com/Lrefrain/p/11312881.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值