2018年10月3日训练日记

今天的比赛打了一小时。。。做了个A然后GG了。。。

由于昨晚有事情没睡,结果今天上午定了两个闹钟外加四个电话都没叫醒。。。醒了之后比赛已经接近尾声了。。。

这场题目总体来说比较简单,但是题意表述的不太好,基本都是猜题意。

现在除了3道签到题,已经补完了5道。难度不是很大,但是题意全靠猜。思维性还是比较强的,顺便又巩固了一遍树状数组的原理。总之,还是要学会动脑。

当然,更需要学会读题。。。

正在补树分治的题目,顺便整理了一下板子,又去看了一遍原理,学习了一下高维前缀和的相关知识。

前几天补2016大连icpc现场赛的题目时,遇到了一个树分治,这个题除了套一个树分治的模板还要加上高维前缀和的东西。然后发现自己什么都不会….(只是一个铜牌题),补了一下相关的知识,先写一下高维前缀和吧。

高维前缀和:(统计超集个数)

for(int i = 0; i< 3 ;++i){
    for(int j = 0; j<8 ;++j)
        if( !(j&(1<<(i))) ) a[j] +=  a[j|(1<<(i))];

简单的三行代码,a[j]可以统计出对于当前状态 j 的所有超集的状态和。
举个例子a[1010]
经过高维前缀和的三行代码之后,a[1010] =[1010] + [1011] +[1110] +[1111] 也即是当前状态的四个超集的和。

希望早日能灵活运用树分治模板。

继续努力。

猜你喜欢

转载自blog.csdn.net/LSD20164388/article/details/82934093