先画出一个矩阵,((i,j))上的数为(i*x+j*y),发现只要某一行的第一列的数曾经出现过,就说明已经计算完了,证明感觉挺显然的,自己画一下就可以看出来。
这种不太好处理的权值可以转化为联通块问题然后求直径,每次将枚举的(gcd)的倍数边加到图上。
用线段树维护栈,与维护单调栈类似。