<span>模拟107 题解</span>

A. 字符交换

枚举最终出现的字符,那么答案具有单调性。

之后枚举相同字符的起点,可以计算出终点。

最优策略显然是换到中间的字符旁边,所以用前缀和维护一下就完了。

 

 

 

B. 平方数

考虑怎样的两个数相乘可以构成平方数:

将两个数分别质因数分解,如果二者奇数的质因子集合相同,那么可以构成。

所以可以用哈希表压奇数质因子集合。

然而比较难处理的是质因数分解,暴力根号筛会$TLE$。

这时可以考虑利用本题的特殊性质,即只需要筛出平方质因子,剩下的自然是奇数质因子集合。

一个$O(a_i^{\frac{1}{3}})$的筛法是,

枚举质数直到$a_i^{\frac{1}{3}}$大小,将平方因子直接除掉,将剩余的奇数质因子提出。

最后特判筛后剩余的结果,如果是平方数,那么将它除掉。

提出的质因子乘最终筛剩余的数,即要求的奇数质因子集合。

可以证明上述的筛法是正确的:

设最后筛剩下的数为$x$,如果仍然含有平方质因子,那么

$x$一定可以表示为$x=k*p^2$ $(p>x^{\frac{1}{3}})$。

那么$k<x^{\frac{1}{3}}$,所以$k$只能为$1$,

因为特判了最终的$x$为平方数,正确性得证。

 

 

 

C. 多维网络

直接用排列组合,可以得出在没有坏点的情况下,两点之间的路径数。

所以考虑用奇加偶减的容斥处理这个问题。

显然坏点之间存在一个拓扑序,即按维排序。

设$dp_{i,j}$表示到第$i$个坏点,总共经过了$j$个坏点的方案数。

可以进行显然的$dp$转移,然而这样做的复杂度是$O(n^3d)$。

实际上第二维并没有用,因为只关注奇偶性来进行容斥操作,所以直接压掉第二维就好了。

全部评论

相关推荐

白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。 2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。 3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。
面试被问期望薪资时该如何...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务