牛客小白月赛23【题解】【非官方】
https://ac.nowcoder.com/acm/contest/4784
A、膜法匹配
状压枚举行,复杂度 过了,过的有点莫名其妙。还跑得贼快 15ms
B、阶乘
枚举质因子 p,求出那个质因子的个数之后。通过二分来check 个数是否足够就可以了。
考虑check的时候,(实际上就是某场div2的C),二分质因子 p 的倍数,假设我们现在选择 p*mid,我们不考虑每个数字含有的 p 的个数,我们考虑选择含有 因子的个数,显然这样很好求,就是 ,由于因子最多只有30+个,所以在check 的同时加一个特判就可以了。
C、完全图
完全图就是任意两个点都有边,所以 n-1 条边 多一个连通分量,然后 n-2 条边 多一个连通分量……
但是不太明白为啥出题人出这么大的范围,然后花了很长时间(打开了IDEA)上了一发 BigInteger
E、A+B问题
感觉这种题没啥意义,PHP一时爽
F、美丽的序列1
类似今年Camp day1 A(https://ac.nowcoder.com/acm/contest/3979/A),两个题相同在都是从n个范围内选出n个数字,然后算相邻对答案差生的贡献,都用到了期望的可加性
Camp的题是求逆序对的期望,所以只需要考虑相邻的逆序即可
小白赛F是求这个序列最少分成多少个连续不下降子段,所以在考虑相邻变成下降的同时,要乘上除了相邻两个线段的剩下线段的长度积,并且由于无论如何都有一个贡献,在最后加上所有数字任选的情况
然后考虑相邻两段,最多有6种情况,实际上就是一个或者多个等差数列,纸上推一下公式就可以了
G、树上求和
就是求每条边被用了多少次,实际上就是这条边的两端节点个数的乘积,所以在dfs求出sz之后,每条边的使用次数就是 sz*(n-sz),排个序即可。
H、奇怪的问题增加了
签到,从后往前遍历一下就可以了
I、寻找子串
枚举后缀,签到
J、最大的差
签到