最好想的就是维护三个前缀和JOI的然后使得J[r]-J[l]==O[r]-O[l]==I[r]-I[l],显然r可以一步一步1->n但是l是一个问题直接枚举会超时怎么办????
骚气解法
维护一个pair的map,为什么用pair因为省事不用重载小于号你用node也可以那样要重载小于号,实际上也是殊途同归.然后我们就维护一下任意两个的差啥叫任意也就是(x-y,y-z)(x-z,z-y)随便任意两个但是要保证这个格式.然后设置(0,0)为0.这是什么格式?首先我们模拟肯定能验证他的正确性,然后我们可以发现如果我后续的二元组跟前面的有相同的,那么我们可以断定一个事.比如我现在用的是(x-y,y-z)的格式,那么我现在的xr-yr,yr-zr与前面的xl-yl,yl-zl相等了也就说明二元组内每个元素都相等就是说明xr-yr=xl-yl ==> xr-xl=yr-yl右边同理不就是我们要找的东西吗.
代码
1 |
|