码迷,mamicode.com
首页 > 其他好文 > 详细

[BZOJ1127][POI2008] KUP子矩阵

时间:2015-10-22 17:24:45      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

Description

  给一个n*n的地图,每个格子有一个价格,找一个矩形区域,使其价格总和位于[k,2k]


Input

  输入k n(n<2000)和一个n*n的地图


Output  

  输出矩形的左上和右下的列-行坐标 或NIE

 

Sample Input

inputdata1
4 3
1 1 1
1 9 1
1 1 1
inputdata2
8 4
1 2 1 3
25 1 2 1
4 20 3 3
3 30 12 2


Sample Output

outputdata1
NIE
outputdata2
2 1 4 2

 

题解(from 出题人):

  若存在a[i,j]∈[k,2k]直接输出。否则将a[i,j]>2k的点看做障碍物,用递推求F[i,j]表示由i,j往左有多长的连续一段不存在障碍物,类似的G[i,j]表示往右的长度。因为a[i,j]<k,故相邻前缀和不可能从<k变为>2k。故若存在S[i,l..r]>2k则必然存在S[i,l..p]∈[k,2k],求F值时判断是否有S[i,j-F[i,j]+1..j]∈[k,2k]即可。否则我们利用F与G求出最大和子矩阵Smax(经典算法,不赘述)。若Smax<k则无解,否则必然存在Smax的前缀和∈[k,2k]。

[BZOJ1127][POI2008] KUP子矩阵

标签:

原文地址:http://www.cnblogs.com/jinkun113/p/4901194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!