{"id":377,"date":"2018-11-08T22:21:46","date_gmt":"2018-11-08T14:21:46","guid":{"rendered":"http:\/\/SmokeyDays.top\/wordpress\/?p=377"},"modified":"2018-11-08T22:21:46","modified_gmt":"2018-11-08T14:21:46","slug":"lp2572-scoi2010-%e5%ba%8f%e5%88%97%e6%93%8d%e4%bd%9c","status":"publish","type":"post","link":"http:\/\/SmokeyDays.top\/wordpress\/2018\/11\/08\/lp2572-scoi2010-%e5%ba%8f%e5%88%97%e6%93%8d%e4%bd%9c\/","title":{"rendered":"lp2572 SCOI2010 \u5e8f\u5217\u64cd\u4f5c"},"content":{"rendered":"<p>\u64cd\u4f5c\u8981\u6c42\uff1a<br \/>\n0 a b \u628a[a, b]\u533a\u95f4\u5185\u7684\u6240\u6709\u6570\u5168\u53d8\u62100<br \/>\n1 a b \u628a[a, b]\u533a\u95f4\u5185\u7684\u6240\u6709\u6570\u5168\u53d8\u62101<br \/>\n2 a b \u628a[a,b]\u533a\u95f4\u5185\u7684\u6240\u6709\u6570\u5168\u90e8\u53d6\u53cd\uff0c\u4e5f\u5c31\u662f\u8bf4\u628a\u6240\u6709\u76840\u53d8\u62101\uff0c\u628a\u6240\u6709\u76841\u53d8\u62100<br \/>\n3 a b \u8be2\u95ee[a, b]\u533a\u95f4\u5185\u603b\u5171\u6709\u591a\u5c11\u4e2a1<br \/>\n4 a b \u8be2\u95ee[a, b]\u533a\u95f4\u5185\u6700\u591a\u6709\u591a\u5c11\u4e2a\u8fde\u7eed\u76841<br \/>\n\u6211\u4eec\u8003\u8651\u7ef4\u62a4\u7ebf\u6bb5\u6811\u6765\u5904\u7406\u8fd9\u4e9b\u8be2\u95ee\u3002<br \/>\n\u8003\u8651\u7ebf\u6bb5\u6811\u7684\u57fa\u672c\u6027\u8d28\u3002\u7ebf\u6bb5\u6811\u7684\u7279\u6027\u51b3\u5b9a\u4e86\u5b83\u80fd\u591f\\(O(nlogn)\\)\u6765\u5904\u7406\u5404\u79cd\u80fd\u591f\\(O(1)\\)\u5408\u5e76\u4e24\u4e2a\u5b50\u533a\u95f4\u4fe1\u606f\u7684\u4fe1\u606f\u3002<br \/>\n\u4e0a\u8ff0\u8be2\u95ee\u4e2d\uff0c\u603b\u5171\u6709\u591a\u5c11\u4e2a1\u662f\u5f88\u5bb9\u6613\u53ef\u4ee5\u7ef4\u62a4\u7684\u3002\u6700\u5927\u7684\u95ee\u9898\u5728\u4e8e\u7ef4\u62a4\u201c\u6700\u591a\u6709\u591a\u5c11\u4e2a\u8fde\u7eed\u76841\u201d<br \/>\n\u5b9e\u9645\u4e0a\uff0c\u5bf9\u4e8e\u8fd9\u91cc\u7684\u6bcf\u4e00\u79cd\u4fe1\u606f\uff0c\u6211\u4eec\u90fd\u9700\u8981\u5bf9\u79f0\u5730\u7ef4\u62a4\u5b83\u4eec\u2014\u2014\u5373\uff0c\u5728\u7ef4\u62a41\u7684\u4fe1\u606f\u7684\u540c\u65f6\u4e5f\u8981\u7ef4\u62a40\u7684\u4fe1\u606f\u3002\u8fd9\u662f\u64cd\u4f5c\\(2\\)\u5bfc\u81f4\u7684\u3002<br \/>\n\u6211\u4eec\u8003\u8651\u5bf9\u4e8e\u4e24\u79cd\u8be2\u95ee\u5206\u522b\u8003\u8651\u3002<br \/>\n\u9996\u5148\u662f\\(3\\)\uff0c\u8fd9\u4e2a\u5f88\u597d\u7ef4\u62a4\uff0c\u76f4\u63a5\u7ef4\u62a4\\(1\\)\u7684\u4e2a\u6570\u5373\u53ef\u3002\u5408\u5e76\u7684\u65f6\u5019\u7b80\u5355\u76f8\u52a0\u5373\u53ef\u3002<br \/>\n\u5bf9\u4e8e\\(4\\)\uff0c\u7b2c\u4e00\u4e2a\u60f3\u5230\u7684\u80af\u5b9a\u662f\u53ef\u4ee5\u7ef4\u62a4\u533a\u95f4\u7684\u6700\u957f\u8fde\u7eed1\u3002<br \/>\n\u4f46\u662f\u6211\u4eec\u53d1\u73b0\uff0c\u4ec5\u4ec5\u7ef4\u62a4\u8fd9\u4e2a\u4fe1\u606f\u8fd8\u662f\u4e0d\u591f\u7684\u3002\u56e0\u4e3a\u8fd9\u6837\u662f\u65e0\u6cd5\u628a\u5b50\u533a\u95f4\u7684\u4fe1\u606f\u5408\u5e76\u7684\u3002<br \/>\n\u6211\u4eec\u53cd\u8fc7\u6765\u8003\u8651\uff0c\u5bf9\u4e8e\u4e00\u4e2a\u533a\u95f4\uff0c\u5b83\u7684\u6700\u957f\u8fde\u7eed1\u6709\u53ef\u80fd\u600e\u6837\u4ece\u4e24\u4e2a\u5b50\u533a\u95f4\u8f6c\u79fb\u8fc7\u6765\u3002<br \/>\n\u9996\u5148\uff0c\u53ef\u80fd\u662f\u5b8c\u5168\u88ab\u5305\u542b\u5728\u4e24\u4e2a\u533a\u95f4\u4e4b\u4e00\u3002\u8fd9\u79cd\u60c5\u51b5\u7684\u8bdd\uff0c\u53ea\u9700\u8981\u7ef4\u62a4\u533a\u95f4\u7684\u6700\u957f\u8fde\u7eed1\uff0c\u7136\u540e\u53d6Max\u5373\u53ef\u3002<br \/>\n\u4f46\u662f\uff0c\u8fd8\u6709\u53ef\u80fd\u8fd9\u4e2a\u533a\u95f4\u662f\u8de8\u8d8a\u4e86\u4e24\u4e2a\u533a\u95f4\u7684\u3002\u8fd9\u65f6\u5019\u6211\u4eec\u9700\u8981\u7ef4\u62a4\uff0c\u5b50\u533a\u95f4\u5de6\u8d77\u6700\u957f\u8fde\u7eed1\u4e0e\u53f3\u8d77\u6700\u957f\u8fde\u7eed1\u3002<br \/>\n\u7136\u540e\uff0c\u5728\u8f6c\u79fb\u533a\u95f4\u4fe1\u606f\u7684\u65f6\u5019\uff0c\u6211\u4eec\u53ea\u9700\u8981\u518d\u8003\u8651\u4e24\u4e2a\u5b50\u533a\u95f4\u7684\u5de6\u8d77\u6700\u957f\u8fde\u7eed1\u4e0e\u53f3\u8d77\u6700\u957f\u8fde\u7eed1\u5373\u53ef\u3002<br \/>\n\u63a5\u7740\u6211\u4eec\u8003\u8651\u5bf9\u4e8e\u7aef\u70b9\u8d77\u6700\u957f\u8fde\u7eed1\u7684\u8f6c\u79fb\u2014\u2014\u8fd9\u79cd\u8f6c\u79fb\u5b58\u5728\u4e00\u79cd\u7279\u6b8a\u60c5\u51b5\uff0c\u4e5f\u5c31\u662f\uff0c\u8fd9\u4e2a\u533a\u95f4\u7684\u7aef\u70b9\u8d77\u6700\u957f\u8fde\u7eed1\u7684\u957f\u5ea6\u8d85\u8fc7\u4e86\u4e2d\u70b9\u3002<br \/>\n\u8fd9\u65f6\u5019\u9700\u8981\u7279\u6b8a\u5224\u5b9a\u3002<br \/>\n\u8fd9\u6837\u5c31\u505a\u5b8c\u4e86\u3002<br \/>\n\u5199\u4e865k\uff0c\u7684\u786e\u662f\u4e00\u9053\u9ebb\u9898\u3002<\/p>\n<p>\u53e6\uff0c\u6211\u83ab\u540d\u5176\u5999RE\u4e86\uff0c\u4f30\u8ba1\u662f\u4e0d\u77e5\u9053\u54ea\u91cc\u8fb9\u754c\u5224\u6302\u4e86\u3002\u8003\u8bd5\u7684\u65f6\u5019\u8981\u6ce8\u610f\u5728\u4e0dMLE\u7684\u60c5\u51b5\u4e0b\u591a\u5f00\u51e0\u500d\u7684\u6570\u7ec4\u4fdd\u9669\u3002<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"cpp\">#include&lt;iostream&gt;\r\n#include&lt;cstdio&gt;\r\n\r\n#define LS (X&lt;&lt;1)\r\n#define RS (X&lt;&lt;1|1)\r\n#define MID ((L+R)&gt;&gt;1)\r\n#define LEN (R-L+1)\r\n#define LLEN (MID-L+1)\r\n#define RLEN (R-MID)\r\nint n,m,a[100005],A,B,op;\r\ninline int Max(int AA,int BB){\r\n    return AA&gt;BB?AA:BB;\r\n}\r\nstruct data{ \r\n    int sm0;int sm1;\r\n    int mx0;int mx1;\r\n    int lmx0;int lmx1;\r\n    int rmx0;int rmx1;\r\n    \/\/\u6709\u7ffb\u8f6c\u6807\u8bb0\u4e3a1\uff0c\u5426\u5219\u4e3a0\uff1b\u6ca1\u6709\u8d4b\u503c\u4e3a-1\uff0c\u6709\u4e3a0\u62161\uff1b \r\n    int lzy;int st;\r\n    data(int sm0=0,int sm1=0,int mx0=0,int mx1=0,int lmx0=0,int lmx1=0,int rmx0=0,int rmx1=0,int lzy=0,int st=-1):\r\n        sm0(sm0),sm1(sm1),mx0(mx0),mx1(mx1),lmx0(lmx0),lmx1(lmx1),rmx0(rmx0),rmx1(rmx1),lzy(lzy),st(st){}\r\n}tr[300005];\/\/262144\r\ninline data mrg(const data &amp;X,const data &amp;Y,const data BS){\r\n    data RT;\r\n    RT.mx0=Max(X.mx0,Y.mx0);\r\n    RT.mx0=Max(RT.mx0,X.rmx0+Y.lmx0);\r\n    RT.sm0=X.sm0+Y.sm0;\r\n    \/\/\u4e00\u4e2a\u5de7\u5999\u7684\u6280\u5de7\uff0c\u5982\u679c\u5b58\u57281\uff0c\u90a3\u4e48\u80af\u5b9a\u4e0d\u662f\u51680\uff0c\u53cd\u4e4b\u4ea6\u7136\u3002 \r\n    RT.lmx0=X.sm1?X.lmx0:X.lmx0+Y.lmx0;\r\n    RT.rmx0=Y.sm1?Y.rmx0:Y.rmx0+X.rmx0;\r\n    \r\n    RT.mx1=Max(X.mx1,Y.mx1);\r\n    RT.mx1=Max(RT.mx1,X.rmx1+Y.lmx1);\r\n    RT.sm1=X.sm1+Y.sm1;\r\n    RT.lmx1=X.sm0?X.lmx1:X.lmx1+Y.lmx1;\r\n    RT.rmx1=Y.sm0?Y.rmx1:Y.rmx1+X.rmx1;\r\n    RT.lzy=BS.lzy;RT.st=BS.st;\r\n    return RT;\r\n}\r\ninline void updt(int X){\r\n    tr[X]=mrg(tr[LS],tr[RS],tr[X]);\r\n}\r\ninline void rnw1(int X,int L,int R){\r\n    std::swap(tr[X].lmx0,tr[X].lmx1);\r\n    std::swap(tr[X].rmx0,tr[X].rmx1);\r\n    std::swap(tr[X].mx0,tr[X].mx1);\r\n    std::swap(tr[X].sm0,tr[X].sm1);\r\n}\r\ninline void rnw20(int X,int L,int R){\r\n    tr[X].lmx0=LEN;tr[X].lmx1=0;\r\n    tr[X].rmx0=LEN;tr[X].rmx1=0;\r\n    tr[X].mx0=LEN;tr[X].mx1=0;\r\n    tr[X].sm0=LEN;tr[X].sm1=0;\r\n}\r\ninline void rnw21(int X,int L,int R){\r\n    tr[X].lmx0=0;tr[X].lmx1=LEN;\r\n    tr[X].rmx0=0;tr[X].rmx1=LEN;\r\n    tr[X].mx0=0;tr[X].mx1=LEN;\r\n    tr[X].sm0=0;tr[X].sm1=LEN;\r\n}\r\ninline void rnw(int X,int L,int R,int TYP){\r\n    if(TYP==0){\r\n        tr[X].lzy=0;tr[X].st=0;\r\n        rnw20(X,L,R);\r\n    }else if(TYP==1){\r\n        tr[X].lzy=0;tr[X].st=1;\r\n        rnw21(X,L,R);\r\n    }else{\r\n        tr[X].lzy^=1;\r\n        rnw1(X,L,R);\r\n    }\r\n}\r\ninline void pshd(int X,int L,int R){\r\n    if(tr[X].st&gt;-1){\r\n        rnw(LS,L,MID,tr[X].st);rnw(RS,MID+1,R,tr[X].st);\r\n        tr[X].st=-1;\r\n    }\r\n    if(tr[X].lzy){\r\n        rnw(LS,L,MID,2);rnw(RS,MID+1,R,2);\r\n        tr[X].lzy=0;\r\n    }\r\n}\r\ninline void chg(int X,int L,int R,int TYP){\r\n    if(A&lt;=L&amp;&amp;R&lt;=B){\r\n        \/\/\u5982\u679c\u5b8c\u5168\u88ab\u5305\u542b\u5219\u76f4\u63a5\u66f4\u65b0\u3002 \r\n        rnw(X,L,R,TYP);\r\n        return;\r\n    }\r\n    pshd(X,L,R);\r\n    if(A&lt;=MID){\r\n        chg(LS,L,MID,TYP);\r\n    }\r\n    if(B&gt;MID){\r\n        chg(RS,MID+1,R,TYP);\r\n    }\r\n    updt(X);\r\n}\r\ninline data qry(int X,int L,int R){\r\n    if(A&lt;=L&amp;&amp;R&lt;=B){\r\n        pshd(X,L,R);\r\n        return tr[X];\r\n    }\r\n    pshd(X,L,R);\r\n    if(A&lt;=MID){\r\n        if(B&gt;MID){\r\n            return mrg(qry(LS,L,MID),qry(RS,MID+1,R),data());\r\n        }else{\r\n            return qry(LS,L,MID);\r\n        }\r\n    }else{\r\n        if(B&gt;MID){\r\n            return qry(RS,MID+1,R);\r\n        }else{\r\n            return data();\r\n        }\r\n    }\r\n}\r\n\r\ninline void build(int X,int L,int R){\r\n    if(L==R){\r\n        tr[X]=(data){a[L]^1,a[L],a[L]^1,a[L],a[L]^1,a[L],a[L]^1,a[L],0,-1};\r\n        return;\r\n    }\r\n    build(LS,L,MID);\r\n    build(RS,MID+1,R);\r\n    updt(X);\r\n}\r\nvoid init(){\r\n    scanf(\"%d%d\",&amp;n,&amp;m);\r\n    for(int i=1;i&lt;=n;++i){\r\n        scanf(\"%d\",&amp;a[i]);\r\n    }\r\n    build(1,1,n);\r\n    data ans;\r\n    for(int i=1;i&lt;=m;++i){\r\n        scanf(\"%d%d%d\",&amp;op,&amp;A,&amp;B);\r\n        ++A,++B;\r\n        if(op&lt;3){\r\n            chg(1,1,n,op);\r\n        }else if(op==3||op==4){\r\n            ans=qry(1,1,n);\r\n            if(op==3){\r\n                printf(\"%d\\n\",ans.sm1);\r\n            }else if(op==4){\r\n                printf(\"%d\\n\",ans.mx1);\r\n            }\r\n        }\r\n    }\r\n}\r\nint main(){\r\n    init();\r\n    return 0;\r\n}<\/code><\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u64cd\u4f5c\u8981\u6c42\uff1a 0 a b \u628a[a, b]\u533a\u95f4\u5185\u7684\u6240\u6709\u6570\u5168\u53d8\u62100 1 a b \u628a[a, b]\u533a\u95f4\u5185\u7684\u6240\u6709\u6570\u5168\u53d8\u62101 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/SmokeyDays.top\/wordpress\/2018\/11\/08\/lp2572-scoi2010-%e5%ba%8f%e5%88%97%e6%93%8d%e4%bd%9c\/\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201clp2572 SCOI2010 \u5e8f\u5217\u64cd\u4f5c\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[43,8,9,6,48,5],"tags":[],"_links":{"self":[{"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/posts\/377"}],"collection":[{"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/comments?post=377"}],"version-history":[{"count":1,"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/posts\/377\/revisions"}],"predecessor-version":[{"id":378,"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/posts\/377\/revisions\/378"}],"wp:attachment":[{"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/media?parent=377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/categories?post=377"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/tags?post=377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}