随便乱水qwq…
感觉海星
咕咕咕了一题
bzoj5244: 最大真因数
胡乱学了个min_25筛
注意到答案函数是不满足积性函数的所以不能直接筛
但是观察我们min_25筛的后面一部分的过程
可以发现,对于每个合数
我们用的是其最小的质因子来将其的贡献统入
又可以知道一个数的最大真因数是他除以他的最小质因子
所以先筛f(i)=if(i)=if(i)=i这个函数的前缀和
从w(i,j+1)w(i,j+1)w(i,j+1)计算到w(i,j)w(i,j)w(i,j)时,先不进行转移
先枚举最小质因子次数来计算答案,其实就是用后面一个式子除一个prime[i]prime[i]prime[i]即可
bzoj5245: 欧拉函数
由于数据随机
打表可知值域在400004000040000以内的仅有420342034203个质数
所以对于第二个操作,我们可以用线段树套bitset维护区间内有多少个质因数出现过
最后直接按定义计算欧拉函数即可
由于数据随机
对于第一个操作,可知总值域不超过2e92e92e9
所以树状数组维护一下区间和,预处理2e9\sqrt 2e92e9内的质数,直接筛然后按定义计算欧拉函数即可
由于数据随机所以可以卡过…
bzoj5254: 红绿灯
可知如果一个人走到某个路口被红灯拦下了,那么后面这个人的行动路线是一样的
预处理一个f[i]f[i]f[i]表示在第iii个路口从绿灯第一秒出发,需要多少时间到终点
于是只需要知道在某个时间zzz,从某个路口出发会在哪个路口被拦下
设dis[i]dis[i]dis[i]表示从起点到第iii个路口所需时间,mod=R+Gmod=R+Gmod=R+G
那么当且仅当dis[i]−dis[u]+z<G(mod  (R+G))dis[i]-dis[u]+z < G (\mod (R+G))dis[i]−dis[u]+z<G(mod(R+G))时,从路口uuu出发不会被路口iii拦下
先对前式所有数取模后可以知道只需要满足
dis[i]−((dis[u]−z+mod)%mod)>Gdis[i]-((dis[u]-z+mod)\%mod) >Gdis[i]−((dis[u]−z+mod)%mod)>G即会被拦下
根据括号内式子的大小关系讨论dis[i]dis[i]dis[i]的取值范围
过程用一个动态开点线段树维护即可
bzoj5255: 全排列
随意思考一下就可以知道,只要满足这两个区间[l1,r1][l1,r1][l1,r1],[l2,r2][l2,r2][l2,r2]离散化后值是相同的
那么这两个区间就是相似的
所以只需要知道相对大小关系
预处理f[i][j]f[i][j]f[i][j]表示大小为iii的排列,含有jjj个逆序对的方案数
注意到逆序对最多只有n∗(n−1)2\frac{n*(n-1)}{2}2n∗(n−1)个,那么预处理的复杂度是可以接受的
转移可以O(1)O(1)O(1)
最后统计答案的时候组合数一下就完事
感觉最水的一道啊qwq
715

被折叠的 条评论
为什么被折叠?



