1. 题目

传送们= ̄ω ̄=

2. 题解

首先设$sum[i][j]$FJ的奶牛1~n中,有属性j的有多少头。显然这就是个前缀和(都说了是sum了)。
设区间$[l+1,r]$是符合条件的(即是一个“平衡”队列),那么满足:
$sum[r][1]-sum[l][1]=sum[r][2]-sum[l][2]=sum[r][3]-sum[l][3]=...=sum[r][k]-sum[l][k]$
即:
$sum[l][2]-sum[l][1]=sum[r][2]-sum[r][1],sum[l][3]-sum[l][1]=sum[r][3]-sum[r][1]...sum[l][k]-sum[l][1]=sum[r][k]-sum[r][1]$
(通过移项可得)
所以我们吧$sum[i][j]$减去$sum[i][1]$,并且哈希$sum[i]$(整个数组哈希),再枚举终点$sum[r]$,用$sum[r]$去哈希表里找一个最小的l使得$sum[l]$与$sum[r]$相等,然后答案就是最大的$r-l$。

代码: