{"id":851,"date":"2019-04-03T22:29:36","date_gmt":"2019-04-03T14:29:36","guid":{"rendered":"http:\/\/SmokeyDays.top\/wordpress\/?p=851"},"modified":"2019-04-03T22:29:36","modified_gmt":"2019-04-03T14:29:36","slug":"lp1501-%e5%9b%bd%e5%ae%b6%e9%9b%86%e8%ae%ad%e9%98%9f-tree-ii","status":"publish","type":"post","link":"http:\/\/SmokeyDays.top\/wordpress\/2019\/04\/03\/lp1501-%e5%9b%bd%e5%ae%b6%e9%9b%86%e8%ae%ad%e9%98%9f-tree-ii\/","title":{"rendered":"lp1501 \u56fd\u5bb6\u96c6\u8bad\u961f Tree II"},"content":{"rendered":"\n<p>\u5982\u679c\u6ca1\u6709\u64cd\u4f5c2\uff0c\u5c31\u662f\u6811\u94fe\u5256\u5206\u5957\u7ebf\u6bb5\u6811\u7684\u88f8\u9898\u4e86\u3002<br>\n\u4f46\u662f\u64cd\u4f5c2\u8ba9\u8fd9\u9898\u53d8\u5f97\u9ebb\u70e6\u4e86\u5f88\u591a\u3002<br>\n\u8003\u8651LCT\u3002\u6211\u4eec\u77e5\u9053LCT\u7ef4\u62a4\u6bcf\u4e00\u6761\u94fe\u4f7f\u7528\u4e86\u5e73\u8861\u6811\u3002\u4ed4\u7ec6\u89c2\u5bdf\u8fd9\u4e00\u9898\u7684\u4fe1\u606f\uff0c\u6211\u4eec\u53d1\u73b0\u5b83\u4eec\u90fd\u662f\u53ef\u4ee5\u4f7f\u7528\u5e73\u8861\u6811\u6765\u7ef4\u62a4\u7684\u3002<br>\n\u90a3\u4e48\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u7528LCT\u6765\u7ef4\u62a4\u8fd9\u9053\u9898\u3002 <br>\n\u6ce8\u610f\uff1a\u5904\u7406\u4fe1\u606f\u7684\u65f6\u5019\u8981\u5148\u4e58\u518d\u52a0\uff0c\u5426\u5219\u53ef\u80fd\u4f1a\u5f15\u8d77\u6df7\u4e71\u3002 <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include&lt;iostream>\n#include&lt;cstdio>\n#include&lt;cstring>\n#include&lt;algorithm>\n#include&lt;queue>\n#include&lt;vector>\n#define add(X,Y) (X=(X+Y)%MOD)\n#define mlt(X,Y) (X=(1ll*X*Y%MOD))\nusing namespace std;\n\ntypedef long long ll;\ninline void Swap(int &amp;A,int &amp;B){\n\tA^=B^=A^=B;\n}\nconst int N=100005;\nconst ll MOD=51061;\nint fa[N],ch[N][2],rev[N],sz[N];\nll sm[N],val[N],lzy1[N],lzy2[N];\ninline void updt(int X){\n\tsz[X]=sz[ch[X][0]]+sz[ch[X][1]]+1;\n\tsm[X]=(sm[ch[X][0]]+sm[ch[X][1]]+val[X])%MOD;\n}\ninline void flp(int X){\n\tSwap(ch[X][0],ch[X][1]);\n\trev[X]^=1;\n}\ninline void rnw1(int X,ll V){\n\tadd(sm[X],1ll*V*sz[X]);\n\/\/\t\u8fd9\u91cc\u4e0d\u5e94\u4f7f\u7528mlt\uff0c\u8fd9\u662f\u56e0\u4e3amlt\u4f1a\u4fee\u6539\u539f\u6570\u3002 \n\tadd(val[X],V);\n\tadd(lzy1[X],V);\n}\ninline void rnw2(int X,ll V){\n\tmlt(sm[X],V);\n\tmlt(val[X],V);\n\tmlt(lzy2[X],V);\n\tmlt(lzy1[X],V);\n}\ninline void pshd(int X){\n\tif(lzy2[X]!=1){\n\t\trnw2(ch[X][0],lzy2[X]);\n\t\trnw2(ch[X][1],lzy2[X]);\n\t\tlzy2[X]=1;\n\t}\n\tif(lzy1[X]){\n\t\trnw1(ch[X][0],lzy1[X]);\n\t\trnw1(ch[X][1],lzy1[X]);\n\t\tlzy1[X]=0;\n\t}\n\tif(rev[X]){\n\t\tif(ch[X][0])flp(ch[X][0]);\n\t\tif(ch[X][1])flp(ch[X][1]);\n\t\trev[X]=0;\n\t}\n}\ninline bool ntrt(int X){\n\treturn ch[fa[X]][0]==X||ch[fa[X]][1]==X;\n}\ninline bool fndD(int X){\n\treturn ch[fa[X]][1]==X;\n}\ninline void splayOne(int X){\n\tint Y=fa[X],Z=fa[Y],D=fndD(X),D2=fndD(Y),C=ch[X][D^1];\n\tif(ntrt(Y)){\n\t\tch[Z][D2]=X;\n\t}\n\tch[X][D^1]=Y,ch[Y][D]=C;\n\tif(C){\n\t\tfa[C]=Y;\n\t}\n\tfa[X]=Z,fa[Y]=X;\n\tupdt(Y),updt(X);\n}\nint st[N];\ninline void splay(int X){\n\tint Y=X,Z=0;\n\tst[++Z]=Y;\n\twhile(ntrt(Y)){\n\t\tY=fa[Y],st[++Z]=Y;\n\t}\n\twhile(Z){\n\t\tpshd(st[Z--]);\n\t}\n\twhile(ntrt(X)){\n\t\tY=fa[X],Z=fa[Y];\n\t\tif(ntrt(Y)){\n\t\t\tsplayOne(fndD(X)^fndD(Y)?X:Y);\n\t\t}\n\t\tsplayOne(X);\n\t}\n}\ninline void access(int X){\n\tfor(int Y=0;X;Y=X,X=fa[X]){\n\t\tsplay(X),ch[X][1]=Y,updt(X);\n\t}\n}\ninline void chgrt(int X){\n\taccess(X),splay(X),flp(X);\n}\ninline void split(int X,int Y){\n\tchgrt(X),access(Y),splay(Y);\n}\n\/\/X\u5728Y\u4e0b\u65b9\u3002\ninline void link(int X,int Y){\n\tchgrt(X),fa[X]=Y;\n} \ninline void cut(int X,int Y){\n\tsplit(X,Y),fa[X]=ch[Y][0]=0;\n}\n\nint n,q;\nvoid init(){\n\tscanf(\"%d%d\",&amp;n,&amp;q);\n\tfor(int i=1;i&lt;=n;++i){\n\t\tsm[i]=val[i]=lzy2[i]=1;\n\t}\n\tint X,Y,P,Q;\n\tll V;\n\tfor(int i=1;i&lt;n;++i){\n\t\tscanf(\"%d%d\",&amp;X,&amp;Y);\n\t\tlink(X,Y);\n\t}\n\tchar op[4];\n\tfor(int i=1;i&lt;=q;++i){\n\t\tstd::cin>>op;\n\t\tscanf(\"%d%d\",&amp;X,&amp;Y);\n\t\tswitch(op[0]){\n\t\t\tcase '+':{\n\t\t\t\tscanf(\"%lld\",&amp;V);\n\t\t\t\tsplit(X,Y);\n\t\t\t\trnw1(Y,V);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase '-':{\n\t\t\t\tscanf(\"%d%d\",&amp;P,&amp;Q);\n\t\t\t\tcut(X,Y);\n\t\t\t\tlink(P,Q);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase '*':{\n\t\t\t\tscanf(\"%lld\",&amp;V);\n\t\t\t\tsplit(X,Y);\n\t\t\t\trnw2(Y,V);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase '\/':{\n\t\t\t\tsplit(X,Y);\n\t\t\t\tprintf(\"%lld\\n\",sm[Y]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\nint main(){\n\tinit();\n\treturn 0;\n}\n\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5982\u679c\u6ca1\u6709\u64cd\u4f5c2\uff0c\u5c31\u662f\u6811\u94fe\u5256\u5206\u5957\u7ebf\u6bb5\u6811\u7684\u88f8\u9898\u4e86\u3002 \u4f46\u662f\u64cd\u4f5c2\u8ba9\u8fd9\u9898\u53d8\u5f97\u9ebb\u70e6\u4e86\u5f88\u591a\u3002 \u8003\u8651LCT\u3002\u6211\u4eec\u77e5\u9053LCT\u7ef4 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/SmokeyDays.top\/wordpress\/2019\/04\/03\/lp1501-%e5%9b%bd%e5%ae%b6%e9%9b%86%e8%ae%ad%e9%98%9f-tree-ii\/\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201clp1501 \u56fd\u5bb6\u96c6\u8bad\u961f Tree II\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":[17,30,106,56,70,8,6,5],"tags":[],"_links":{"self":[{"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/posts\/851"}],"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=851"}],"version-history":[{"count":1,"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/posts\/851\/revisions"}],"predecessor-version":[{"id":852,"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/posts\/851\/revisions\/852"}],"wp:attachment":[{"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/media?parent=851"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/categories?post=851"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/SmokeyDays.top\/wordpress\/wp-json\/wp\/v2\/tags?post=851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}