abc400
最唐的一集
C:
发现前面这个2^{a}有点唐,所以我们把这个东西按奇偶分类算
也就是拆成4 * 2^{2a} * b^{2}和4 * 2^{2a} * b{2},然后后面的就可以乘到平方里面,然后除2和除4,然后再sqrt一下了。double最多存252,警钟长鸣!
D:
01bfs
翻译错了!怎么一次可以踢两个啊?
E:
质数为偶数,不妨开平方,那就变成了两个质因数
nlog预处理每个数有多少个只因数,然后就做完了。triepi的含金量还在上升,这个调和级数还是很给力的,或许用bfs会快一点。
F:
题解有一步还是很神的,但是不知道有没有用。也就是把所有操作反过来
一眼区间dp
但是怎么转移呢?
猜猜猜设dp[i][j]为颜色i到j做完的最小代价。
让代价变得更小,那么我们必然是一些相同的颜色连在一起会减少
我考场上猜的是dp[i][j]染完第一个操作必然颜色是c[i]或c[j],但其实假掉了。
不妨枚举三个点,那么这样转移下去的话一个段都能转移到了
这个反一下还是很困难的
反成什么呢?
首先颜色全为c,然后变成什么颜色其实不重要,因为后面都会覆盖,那么变成0就好了
所以我们操作的要求就是这一段颜色为c或0,初始的颜色为c[i]。然后要全变成了0。全变成0,那么说明这个点最上面那个线段颜色为c[i],那么就好了。
我们设dp[i][j]为i到j全部涂成0的最少代价。显然的一个转移就是dp[i][j]=dp[i][k]+dp[k][i],但是这样就忽略了一个重要的性质,也就是我们可以拓展。如果a[i]等于a[j]那么就可以有一个操作去横跨整个区间,然后扣掉这个颜色的然后加起来,但是中间可能更优的,所以还要再处理一下。否则所有操作都不覆盖整个区间,也就是。如果两端颜色不同,那么我们从中间转移的答案一定是最优的。不会有两个颜色操作是有交但不包含的,这样肯定是不优的,所以我们从中转点转移肯定考虑到了所有情况。那么就剩下了左右端点颜色相同的情况,此时转移就清晰很多了。我们可以任意扣掉有颜色的段来转移。也不太好转移,但是我们还可以区间dp,枚举中间点颜色是否相同,这肯定考虑了所有情况,这太神了!然而显然是寄了
G:
好像是紫的,看看会不会吧。
本来应该是1h解决的东西啊,上分场打成下分场,还好只掉了6分

浙公网安备 33010602011771号