{"id":238,"date":"2011-06-02T01:48:28","date_gmt":"2011-06-01T17:48:28","guid":{"rendered":"http:\/\/www.shuizilong.com\/house\/?p=238"},"modified":"2012-06-08T01:51:04","modified_gmt":"2012-06-07T17:51:04","slug":"spoj-912-submatrix-of-submatrix","status":"publish","type":"post","link":"https:\/\/www.shuizilong.com\/house\/archives\/spoj-912-submatrix-of-submatrix\/","title":{"rendered":"SPOJ 912. Submatrix of submatrix"},"content":{"rendered":"<h3>Brief description: <\/h3>\n<p>\u5728\u4e00\u4e2a N*M \u7684\u77e9\u9635\u4e2d\u5bfb\u627e\u4e00\u4e2a A*B \u7684\u5b50\u77e9\u9635\uff0c\u5728\u8fd9\u4e2a A*B \u9636\u7684\u77e9\u9635\u4e2d\u518d\u5bfb\u627e\u4e00\u4e2a C*D \u7684\u5b50\u77e9\u9635\uff0c<br \/>\n\u4f7f\u5f97\u8fd9\u4e24\u4e2a\u77e9\u9635\u7684\u5dee\u6700\u5927\uff0c\u53e6\u3001C*D \u5b50\u77e9\u9635\u4e0d\u53ef\u4ee5\u89e6\u78b0 A*B \u77e9\u9635\u7684\u8fb9\u754c\u3002<br \/>\n( .. N \u2264 1000 \u2026 \uff09<\/p>\n<p><!--more--><\/p>\n<h3>Analysis: <\/h3>\n<p>\u679a\u4e3e\u4e00\u9636\u5b50\u77e9\u9635\uff0c\u5bf9\u4e8c\u9636\u5b50\u77e9\u9635\u548c\u6bcf\u5217\uff0c\u5206\u522b\u7ef4\u62a4\u5355\u8c03\u961f\u5217\uff0c\u65f6\u95f4\u590d\u6742\u5ea6 O(NM)\u3002<\/p>\n<pre class=\"brush: cpp; collapse: true; first-line: 1; light: false; title: SPOJ 912. Submatrix of submatrix.cpp; toolbar: true; notranslate\" title=\"SPOJ 912. Submatrix of submatrix.cpp\">\r\n\r\nconst int N = 1001;\r\n\r\nstruct MonoList{\r\n    int a&#x5B;N], b&#x5B;N];\r\n    int op, cz, nn;\r\n    inline int size(){\r\n        return op - cz + 1;\r\n    }\r\n    inline int front(){\r\n        return a&#x5B;cz];\r\n    }\r\n    void init(){\r\n        a&#x5B;0] = 0, op = -1, cz = 0;\r\n    }\r\n    void init(int l){\r\n        a&#x5B;0] = 0, op = -1, cz = 0, nn = l;\r\n    }\r\n\r\n    void push_without_pop(int val, int label){\r\n        while (op &gt;= cz &amp;&amp; val &lt;= a&#x5B;op]){\r\n            --op;\r\n        }\r\n        a&#x5B;++op] = val, b&#x5B;op] = label;\r\n    }\r\n\r\n    void push(int val, int label){\r\n        push_without_pop(val, label);\r\n        if (b&#x5B;cz] + nn == b&#x5B;op]) ++cz;\r\n    }\r\n\r\n} Sub, Col&#x5B;N];\r\n\r\nint _T&#x5B;101], s&#x5B;N]&#x5B;N], ans;\r\nint n0, m0, n1, m1, n2, m2;\r\n\r\ninline int s1(int x, int y){\r\n    return s&#x5B;x]&#x5B;y] - s&#x5B;x-n1]&#x5B;y] - s&#x5B;x]&#x5B;y-m1] + s&#x5B;x-n1]&#x5B;y-m1];\r\n}\r\n\r\ninline int s2(int x, int y){\r\n    return s&#x5B;x]&#x5B;y] - s&#x5B;x-n2]&#x5B;y] - s&#x5B;x]&#x5B;y-m2] + s&#x5B;x-n2]&#x5B;y-m2];\r\n}\r\n\r\nint main(){\r\n\r\n    REP_1(i, 100) _T&#x5B;i] = (i * 71 + 17) % 100 + 1; Rush{\r\n\r\n        RD(n0, m0, n1, m1, n2, m2);\r\n\r\n        REP_1(i, n0) {\r\n            int t; RD(t), s&#x5B;i]&#x5B;1] = s&#x5B;i-1]&#x5B;1] + t;\r\n            FOR_1(j, 2, m0){\r\n                t = _T&#x5B;t];\r\n                s&#x5B;i]&#x5B;j] = s&#x5B;i]&#x5B;j-1] + s&#x5B;i-1]&#x5B;j] - s&#x5B;i-1]&#x5B;j-1] + t;\r\n            }\r\n        }\r\n\r\n        ans = 0; FOR(j, m2+1, m0) Col&#x5B;j].init(n1 - n2 - 1);\r\n        Sub.init(m1 - m2 - 1);\r\n\r\n        FOR(i, n2+1, n1-1) FOR(j, m2+1, m0)\r\n        Col&#x5B;j].push_without_pop(s2(i, j), i);\r\n\r\n        FOR_1(i, n1, n0){\r\n\r\n            FOR(j, m2+1, m0) Col&#x5B;j].push(s2(i-1, j), i-1);\r\n\r\n            Sub.init(); FOR(j, m2+1, m1) Sub.push_without_pop(Col&#x5B;j].front(), j);\r\n            FOR(j, m1, m0) {\r\n                checkMax(ans, s1(i, j) - Sub.front());\r\n                Sub.push(Col&#x5B;j].front(), j);\r\n            }\r\n\r\n            checkMax(ans, s1(i, m0) - Sub.front());\r\n        }\r\n\r\n        OT(ans);\r\n    }\r\n}\r\n<\/pre>\n<h3>External link: <\/h3>\n<p><a href=\"http:\/\/www.spoj.pl\/problems\/MATRIX2\/\">http:\/\/www.spoj.pl\/problems\/MATRIX2\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Brief description: \u5728\u4e00\u4e2a N*M \u7684\u77e9\u9635\u4e2d\u5bfb\u627e\u4e00\u4e2a A*B \u7684\u5b50\u77e9\u9635\uff0c\u5728\u8fd9\u4e2a A*B \u9636\u7684\u77e9\u9635\u4e2d\u518d\u5bfb\u627e\u4e00\u4e2a C*D \u7684\u5b50\u77e9\u9635\uff0c \u4f7f\u5f97\u8fd9\u4e24\u4e2a\u77e9\u9635\u7684\u5dee\u6700\u5927\uff0c\u53e6\u3001C*D \u5b50\u77e9\u9635\u4e0d\u53ef\u4ee5\u89e6\u78b0 A*B \u77e9\u9635\u7684\u8fb9\u754c\u3002 ( .. N \u2264 1000 \u2026 \uff09<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[21],"tags":[73],"class_list":["post-238","post","type-post","status-publish","format-standard","hentry","category-spoj","tag-73"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2tdP7-3Q","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts\/238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/comments?post=238"}],"version-history":[{"count":0,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts\/238\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/media?parent=238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/categories?post=238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/tags?post=238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}