【做题记录】namomo camp做题记录

DAY1 子串最大差

题解

题目明显可以转换成两个问题,所有子串的最大值-所有子串的最小值。之后是一个很经典的问题,所有区间的最大值的加和可以转换为每一个数在多少个区间上是最大值,然后计算他们总的贡献之和。这样我们使用单调栈计算出每一个数的贡献相加即可。

DAY2 No.crossing

题解

很好的想法,由于对于图的转移与编号大小嘻嘻相关,故我们将其转换为一个数轴上,然后正着感觉是在卷着不好考虑,那么我们采用区间dp倒着考虑由小扩展到大就好考虑了。

DAY3 比较板的LCA前缀和,无f**k说

DAY4#456. 选数

还是比较有趣的,简单来说,如果n个数字有两个前缀和相同则它们之间所有数相加为n,否则都不相同必定存在前缀和为0的,则所有前面的数相加即为n。

DAY5序列操作

水题,在线做,线段树。离线做,记录被第一操作更改最后的时间,处理操作2的后缀和,取max。

DAY6数数

裸主席树

DAY7 Minimum Or Spanning Tree

考虑二进制位从高到低一位一位考虑能不能放0,然后再连边考虑。

第二周

DAY8 摘桃子

我们将式子(Sr-Sl-1)%k==r-l+1,然后r-l+1<k故类似于一个滑动窗口模型,同时(Sr-r)%k == (Sl-1-(l-1))%k又可以O(n)解决掉该问题。

DAY9 路径计数2

对于基本的从左上到右下就是一个简单组合数问题的。然后中间有障碍,我们考虑f[i]表示从(1,1)到第i个障碍,其中不经过其他障碍的方案数总和,f[i] = C(x+y-2,x-1) + sigma f[j]*C( f[i].x-f[j].x,f[i].y-f[j].y),即我们计算的时候自带容斥将所有需要经过其他障碍的方案数减去了,计算答案我们设(n,n)为一个障碍即可。

DAY10 函数求和

对于该题,比较容易想到被卡在某个地方的情况是x为0,ai 为1,而要继续走下去,即X |= ai ,1位置固定而剩余0位置随意的情况。故我们一个一个考虑,计算出被卡在每个地方的数有多少个 ( (0->1的2幂次-1)*(剩余0个数的幂次)计算贡献即可。

DAY11 XOR Inverse

由于最后的答案是问需要异或多少时,逆序对最小。可以想到按位考虑从大往小一位一位考虑是否异或,然后利用归并排序求逆序对,判断该位异或1或不异或1哪个会逆序对更小,于是我们就求得了最后的答案,O(nlog^2n)。O(nlogn)做法,每一位独立,然后每一位都保证01情况下逆序对最小即可(未验证正确性)

DAY12 Closest Equals

不妨将相邻两同数与查询都看做一个区间,以区间右端点排序,然后遇到两同数的区间就用l去更新前缀和,遇到查询由于保证r都是大于所有更新数区间的右端点,查询左端点最小值前缀和即可。也可以理解成在一个笛卡尔坐标系下的点查询与矩形覆盖问题,类似于扫描线。

DAY13 CCPC Harbin 2021 G, Damaged Bicycle

很明显状态压缩+期望DP记忆化搜索转移一波就可以了

DAY14 拆方块

明显,答案就是MAX{每个列的最底下到外层}的距离,琢磨琢磨发现,就是H[j]+abs(i-j)然后左右各扫一遍就能够找到最后的答案。

 DAY15

哈希表+DP水题

posted @ 2022-02-27 21:10  Newuser233  阅读(139)  评论(0编辑  收藏  举报