目标
又要来51nod滑水啦
主要是来做点数学题
看看做完20题以后可以到哪里吧
现在16题,才3480分。。感觉好少啊。。
希望这20题可以贡献多一点吧。。
由于数学居多,所以会非常劣质
题表
1675 序列变换
很棒的一个题啊,用的是这一个
我们先求出
,表示左右gcd是i的倍数的和,然后再用上面这个形式变回去就可以了
1179 最大的最大公约数
很水的一个题啊。。
就暴力分解下因数,然后如果有一个因数出现次数超过2,那么就合法,从大到小扫一下就可以了
1188 最大公约数之和 V2
一开始想反演。。然后T了
后面那个其实就是欧拉函数。。
于是就得到了一个 预处理,然后 询问的做法
但是这样并不可以 ,因为你会
于是我们要换一个做法,
于是就得到了一个预处理 ,然后询问 的做法
1239 欧拉函数之和
杜教筛的一个入门题啊!
我们知道
把i提出来可以得到
那么我们只需要后面那个值就可以了
因考虑枚举后面 的值,可以得到
后面递归求解即可
1244 莫比乌斯函数之和
也是一个杜教筛入门题啊
我们知道
于是
还是一样的套路,枚举
可以得到
于是后面递归去求解就好了
得到式子
1190 最小公倍数之和 V2
刚写完一次,然后崩溃了,文章没了,不想详细写了
感觉是bzoj2226的加强版啊
考虑到有了下界,如果用补集就有了上界,于是之前那题其中
为一个数n小于等于他且和他互质的和 ,这个方法不好用了
于是考虑换一个方法
公式太多,给个链吧。。
但是其实在对拍的时候发现,余数个数是可以达到很大的,至少比500大。。
好像有1000的吧。于是我的数组一改再改,改到了10000才没有崩溃。。所以实在想卡,应该也卡得了。。但是数据随机啊,所以整体还是很快的。。
然后不知道为什么,我的代码很慢。。用了循环展开才成功卡过
1407 与与与与
还不错的一个题啊
开始想想想,想了半天才想回容斥,感觉要完
然后我们现在就需要知道
,表示某些位是1的数有多少个
想了很多不靠谱的方法,比如说暴力bitset合并,这样是
,显然过不去。还有枚举子集DP,这样是
也过不去
于是我们考虑要使用一个更快的方法
直接求肯定是不行的,于是我们一位一位来
表示前k位,&i=i,且后面的与i一样的有多少个
这样递推式就很显然了
如果
的第
位是
,则
否则,
然后就可以
预处理了,然后再容斥一下就可以了。。
注意k要滚动,要不会MLE
1537 分解
很简单的一个题,但是居然没有做出来,怕是被题目这个形式给吓到了QAQ,下次见到这种题目一定不能慌啊,要好好想想
我们设
那么明显地,
显然地,A,B是可以矩乘的
然后我们考虑怎么求出m
可以得到式子
上下相乘,得到
当n是偶数的时候
即
当
时,
恰好满足题意
然后当n为偶数的时候同理,然后这题就做完了
1237 最大公约数之和 V3
非常简单的一个反演题啊!!!还有640分,真是赚死了。。
由于式子太简单,就不写了,两部就推完了,就是一个欧拉
分块,然后强行上杜教筛就可以了
听说杜教筛由于又记忆化,所以时间复杂度是加上去的?
不管了,反正跑得特别快
2026 Gcd and Lcm
容易发现,f是一个积性函数
乱搞一下就发现,其实是问你f(i)的前缀和,然后平方一下
考虑这个怎么杜教筛
问题就转化成了求
因为
常用套路
然后就可以杜教筛了
感觉这题收获蛮大的啊,感觉学会了杜教筛的正确姿势
以前记忆化都是用map存的,这样会很慢。。
其实考虑到,如果n是一样的,我们只需要存 即可,因为你每一次进去询问,都是类似于 的形式,这样子空间也开的下,查询也是 的了
1594 Gcd and Phi
直接构造函数
表示
是i的倍数有多少个数对
显然,这个可以用个数的平方弄出来
然后莫比乌斯还原回去就可以了。。
裸题
1192 Gcd表中的质数
上次做过一次了,就是bzoj的2280,但是这次居然没什么思路QAQ
主要是被限制在每一次枚举质数了。。没有动手推别的式子,真是失败。。
于是认真地写一次把
然后我居然就卡在这里了QAQ
另
然后后面部分的前缀和可以 预处理,然后就可以根号询问了
1223 分数等式的数量
很棒的一个题啊!!看起来毫无思路,挣扎了一下就看题解了。。
题意明显的,就是问题
然后这个形式看起来无从下手,我们可以尝试着提取它的gcd
设
问题变成了求
又因为 互质,所以
设
那么
直接求这个似乎并不好求
于是我们考虑反演一波, 表示,gcd是i的倍数的答案有什么,这样就好求了
这个是可以很快算出来的。。
然后有了这个,用反演公式,即可以把 的给还原回去
然后我的代码巨慢。。跑 本机要4s左右,卡了循环展开还是很慢。。于是买了最后一个数据,发现就是 ,于是打了这个点,
1220 约数之和
和3994: [SDOI2015]约数个数和十分像的一个题吧。。其实就是进化版
是自己推出来的,还居然一次打对,感觉很开心啊
在这里纪念一下吧
你可以发现,其实后面就是一个常数乘上一个等差数列
吧 提前即可, 然后变成要筛 的前缀和,杜教筛即可,如果不会的可以翻到上文,前面有
1238 最小公倍数之和 V3
这题我没A。。T了
然后晚上无聊,卡了一手常数,就卡过了。。
用的是莫比乌斯反演的做法。。
式子不写了,很好推。。然而似乎是
的,所以应该理论上就过不去
不想学欧拉的做法了。。就这样吧
1819 黑白树 V2
蛮复杂的一个树剖
官方题解:
sum[i][j] 考虑令w[x][i][j]为(x的轻儿子的子树中满足dep[v] mod 2=i,col[v]=j的节点v的个数)*x,sum[i][j]即线段树节点代表的区间中的w[x][i][j]之和。
cnt[x][i][j] 表示x的子树中满足dep[v] mod 2=i,col[v]=j的节点v的个数
col[x]表示点x的颜色
tag[i] 表示对满足dep[x] mod 2=i的节点的翻转标记
感觉值维护轻儿子这个思想还是很不错的,然后每一次修改的时候,无论是改段还是改点,都是一直往上跳,每跳到一条轻链,就暴力更新代价。由于每个点最多经过 条轻链,因此复杂度还是可以保证的。然后lazy标记打一打就可以了,对于不同奇偶性的深度都开一个lazy
1462 树据结构
副教练的题啊,我没做出来
感觉我再不学线段树合并的时间复杂度,这辈子都不敢打啊。。
因为不知道什么样的姿势才是对的,这样觉得可以A,但其实是T的,这样觉得会T,但其实是A的。
这题就对于每个节点维护两个以时间为下标的线段树,然后合并就很简单了
说下在树上面时间复杂度的分析:
首先,每个节点,有会动态开
个点,然后一开始,整颗树有
个节点。然后我们考虑,每一次
,如果有节点是空,那么就马上返回了,这个复杂度是可以忽略不计的。然后如果两个节点都不为空,那么其中一个节点就会被“删除”,你以后都只会见到另外一个了。因此,每一个合法的操作,都会删除一个点。因为只有
个节点,因此最差复杂度就是
的
石子归并
对于第一个版本,直接
就可以了,20分到手。。
对于第二个版本,我们可以使用一个
的方法,考虑优化
的DP,这个要用到四边形不等式。正确性已经复杂度将在明天填坑
看了一个多小时的证明,都不是很懂。
现在知道怎么套式子:
对于形如这样的形式:
如果
满足,若存在有
,且满足:
1.
(包含单调性)
2.
(凸性)
设
的决策点为
则会满足
由此,我们得到了一个
的做法
对于第三个版本,我们需要一个
的做法
这个是一个比较奇怪的贪心,我也没有非常理解
只知道算法的内容,若存在有
,那么就把
和
合并,然后将新的值,一直向前寻找位置插入,位置是第一个比他大的位置,然后再之前继续重复这个操作。网上没找到什么关于这个算法的讲解,自己试着猜了一下,觉得往前插入只是优化时间复杂度的,然后发现并不是,和正确性有很大的联系,于是就差不出算法的核心了。。留坑把
1294 修改数组
我们对于这种<的问题,一般可以对于每个数,都减去i,变成小于等于的
然后就变成一个十分经典的问题了,乱搞一下即可
2025 直角三角形的周长和
这题的话,还是很厉害的一个题吧。。
然后这题让我理解了一下线性筛,以前都是背板子,很惭愧啊
我买了题解QAQ
容斥肯定是不用说的
考虑怎么求
,然后满足题意的有多少个
变一下式子,
然后转化成枚举a的因数
设
就有:
我们可以枚举
设c为示最小的与x相乘是完全平方数的数,这个可以线性筛出来
因为x*y必须是一个完全平方数,所以y可以用
的形式表示。
对
进行讨论,求出d的范围,就可以O(1)对于每一个
,算出它对答案的贡献了
1124 N!的非0最低位(没做完)
这题没做完,就不当作计划完成的一部分了
之前一个组合数最后若干位的弱化版
就先把2和5提出来,然算出前面的东西,中国剩余定理合并就可以了
由于要写高精度,于是拿完
的分就跑了
下了第一个WA的数据,发现爆long long了,然后自己出了一个都过了,于是就安心地跑了
1587 半现串
十分简单的一个数位DP啊
在宿舍里面想了一下就出来了,然后今早感觉时间可能有点虚,但是还是写了,于是就过了。。
考虑对于每一个长度是
的子串都建立在AC自动机上面,这样最多也就是
个节点。然后我们就直接在AC自动机上面数位DP,
表示现在在第几位,在AC自动机上面是哪一个,是否没有限制,是否出现了合法串。然后就可以了
然后一开始还T了一个点,于是就考虑到有两次询问,如果已经没有限制了,状态是不用清除的,然后就可以通过这一题了
51nod20题的划水小计划终于结束了
最后勉强是以5位数收尾吧(其实我是看最后一题还差500分,特地找了个8级最水的题来做QAQ)