BZOJ1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列

Posted ONION_CYC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列相关的知识,希望对你有一定的参考价值。

【题意】给定n头牛,k个特色,给出每头牛拥有哪些特色的二进制对应数字,[i,j]平衡当且仅当第i~j头牛的所有特色数量都相等,求最长区间长度。

【算法】平衡树+数学转化

【题解】统计前缀和sum[i][j]表示前i头牛特色为j的数量,则区间i~j平衡需要满足:

sum[j][1]-sum[i-1][1]=sum[j][2]-sum[i-1][2]=sum[j][3]-sum[i-1][3]=...

移项可得,只须

sum[j][1]-sum[j][2]=sum[i-1][1]-sum[i-1][2]

sum[j][1]-sum[j][3]=sum[i-1][1]-sum[i-1][3]

所以,我们将所有前缀和sum[i][k]-=sum[i][1],那么区间i~j平衡只须sum[i-1][k]=sum[j][k],k=1~maxk。

动态寻找数字可以用平衡树实现,因为是找相等,map最方便。

另外,这类通过数学公式变换优化的例子十分常见,思考中将数学公式列出来有助于进一步发现数学特征。

 

以上是关于BZOJ1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列的主要内容,如果未能解决你的问题,请参考以下文章

bzoj 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列hash

bzoj 1702 贪心,前缀和

[BZOJ1637][Usaco2007 Mar]Balanced Lineup

bzoj 1637: [Usaco2007 Mar]Balanced Lineup

[BZOJ] 1639: [Usaco2007 Mar]Monthly Expense 月度开支

bzoj1637[Usaco2007 Mar]Balanced Lineup*