估分:(100 + 0 + 30 = 130)
考场:(100 + 0 + 10 = 110)
((PS):(T2)的样例(10)分我竟然没拿。。。)
(T1)
线段树搞搞即可。
(T2)
不会,打了个神奇(样例都错了)的并查集,(WA0)。
正解也是个并查集,我是对于当前点,合并其儿子以及儿子的儿子。
我们可以认定当前点的其中一个儿子作为并查集的这些点的根,然后合并,并将它连向每个儿子的儿子,并将其他儿子的边删去。
这样我们可以不停地合并合并再合并。最后扫一遍,对于根没有值的就赋(++tot),这样扫一遍就是答案了。
(T3)
打了个暴力,将(n)拆成若干个环求(lcm),结果没有想到(DP)。。。
我们可以把题目转化成,把(n)分成若干个数,求这些数的(lcm)的不同值的和。
我们可以设(f[i][j])表示到了第(i)个质数,用了(j)个位置的(K)的和。
这样:(f[i][j]=f[i-1][j-pri[i]^k]*pri[i]^k(1<=k)&&(pri[i]^k<=j))
对于当前质数(pri[i]),我们可以加入一个(pri[i]^k)长度的环,那(lcm)就要乘以(pri[i]^k)。
这是01背包,就是我们只能选择一种来转,不然lcm就是最大的那个长度的环(对于当前质数(pri[i])),不合法。
总结
对于暴力,可以尝试转化,例如转化成DP,记忆化搜什么的。。。
不会的题可以打暴力。。。或者说,我们可以先打暴力,然后打表找规律。
要看准题,不然会浪费大量时间的。