52 条题解
-
0raoyu LV 9 @ 2009-08-07 22:48:39
用A表示棋盘
对于正方形,可以类似于盖房子的模型
F=Min(F,F,F)+1
条件为 (Not(A Xor A))And(A Xor A)And(A Xor A)
即满足黑白相间的要求
对于矩形,可以利用极大化思想
F=H[J]*(R[J]-L[J]+1)
其中H[J]表示A向上最多可以延伸的高度,L[J],R[J]表示向左、右可以延伸的宽度
求L的代码如下
L[1]:=1;
For J:=2 to M do
Begin
L[J]:=J;
While(L[J]>1)And(H[J] -
02009-07-31 12:12:07@
用悬线法的可以不开2000*2000的数组
开2000*1的就可以了
一行行地dp -
02009-05-27 22:32:34@
现将原矩阵转换成一个新的矩阵,对于每一对(i,j),当i>1且j>1时判断(i,j)和(i-1,j)(i,j-1)(i-1,j-1)是否相见,如果是,在新矩阵的(i-1,j-1)位置填充一个1,否则是0。
然后问题就变成了在新矩阵中找一个长宽为(x,y)的全是1的矩形(正方形),使(x+1)*(y+1)最大。
对于正方形,可以用一个DP解决。
对于矩形:参见WC2003王知昆的论文,使用极大化思想解决。
至此,时间复杂度为O(mn),空间复杂度为O(mn),但是常数有点大了……因此:
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 41ms
├ 测试数据 07:答案正确... 244ms
├ 测试数据 08:答案正确... 181ms
├ 测试数据 09:答案正确... 494ms
├ 测试数据 10:答案正确... 462ms -
02009-04-03 18:04:36@
伟大悬线法1秒全关
-
02009-03-21 21:11:37@
最大正方形:
int[2000][2000] C++ 开不了
我发现总是只有n+m-1个保存的数据在接下来的递推中要用
且每('\'方向的)斜线上恰有一个
我只开int[4000]
其中f[i]表示第i条('\'方向的)斜线上的要用数据最大矩形:
分治法
把一个矩形割成两个递归,然后处理横跨分割线的子矩形 -
02009-02-17 19:36:43@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 478ms
├ 测试数据 07:答案正确... 900ms
├ 测试数据 08:答案正确... 1744ms
├ 测试数据 09:答案正确... 5244ms
├ 测试数据 10:答案正确... 681ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:9047ms
很无耻的过了。。 -
02009-02-10 18:15:06@
时间好差!
Accepted 有效得分:100 有效耗时:2047ms -
02008-10-29 17:47:33@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案错误...
├ Hint: 恩,900*1200
├ 标准行输出
├ 错误行输出
├ 测试数据 07:答案正确... 447ms
├ 测试数据 08:答案正确... 338ms
├ 测试数据 09:答案错误...
├ Hint: 超越极限的2000*2000
├ 标准行输出
├ 错误行输出
├ 测试数据 10:答案正确... 759ms
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:80 有效耗时:1544ms...09和06死活过不去...拼了...
-
02008-10-01 13:58:59@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 181ms
├ 测试数据 07:答案正确... 697ms
├ 测试数据 08:答案正确... 541ms
├ 测试数据 09:答案正确... 1166ms
├ 测试数据 10:答案正确... 1228ms
---|---|---|---|---|---|---|---|-Accepted 有效得分:100 有效耗时:3813ms
先预处理,搞好每个点往上,往左,往右能走的最长位置。再一列一列做,记下在每个点最往上延伸的前提下,往左走的最远距离和往右走的最远距离,更新答案就可以了。
-
02008-09-12 15:14:45@
真是太奇怪了,为什么同样是2000*2000的longint类型,我前6个点就AC,后面就超内存。。。。。。。。。。。。。。。。。
-
02008-08-26 20:16:48@
超时的同志注意啦,数据类型要开整形,不要长整形,否则后4组都会TEL,
剩下的就是细节了!!!!!
加油啊!!!!!!! -
02008-07-12 22:36:48@
P1055
-
02007-11-30 19:31:35@
我将15%
to 16% -
02007-11-06 22:53:32@
哎……
还真是不公平啊……
c里面根本就没有boolean那么小的数据类型…… -
02007-11-03 15:04:08@
第一问很菜。第二问类似usaco6.几里面一道题。。。
-
02007-10-27 11:34:08@
转化为最大子矩形的问题
最大子矩形问题:
在一个给定的矩形中有一些障碍点,要找出内部不包含任何障碍点的,轮廓与整个矩形平行或重合的最大子矩形。 -
02007-10-26 12:56:37@
怎么没人写个详细的题解?
我想了几天了都没得到正解,麻烦哪位大牛写写
遂了我的心愿 -
02007-10-25 21:48:57@
楼上的,这还算慢?!果然是大牛...
我用极大化也只能这样了,请教下优化方案~~~ -
02007-10-12 20:18:11@
记录在达到最大高度时,能向左右扩展的长度...
-
02007-10-10 19:26:49@
大化思想解决最大子矩形问题