{"id":62,"date":"2010-01-01T23:36:00","date_gmt":"2010-01-01T15:36:00","guid":{"rendered":"http:\/\/localhost\/?p=62"},"modified":"2010-01-01T23:36:00","modified_gmt":"2010-01-01T15:36:00","slug":"sgu_187","status":"publish","type":"post","link":"https:\/\/www.shuizilong.com\/wjmzbmr\/?p=62","title":{"rendered":"sgu 187"},"content":{"rendered":"<p> \u5c31\u662f\u8bf4\u7ed9\u4f601\u5230n\u4e00\u6392\u6570\u6bcf\u6b21\u628a\u4ecel\u5230r\u7684\u6570\u53cd\u8fc7\u6765\u3002\u3002\u8ba9\u4f60\u8f93\u51fa\u6700\u540e\u7684\u90a3\u5217\u6570\u3002\u3002<br \/>\u52a8\u6001\u8868\u3002\u3002\u660e\u663e\u7528splay\u3002\u3002\u6700\u8fd1\u521a\u5b66\u4e86splay\uff0c\u723d\u963f\u3002\u3002<br \/>Code\uff1a<br \/>#include&lt;cstdio&gt;<br \/>#include&lt;iostream&gt;<br \/>#include&lt;algorithm&gt;<br \/>using namespace std;<br \/>const int inf=~0U&gt;&gt;1;<br \/>class splay<br \/>{<br \/> int n;<br \/> struct node<br \/> {<br \/>  int k,s;<br \/>  bool d,rev;<br \/>  node*c[2],*p;<br \/>  node(){c[0]=c[1]=p=0;}<br \/>  void sc(node*_c,bool d)<br \/>  {c[d]=_c;_c-&gt;p=this;_c-&gt;d=d;}<br \/> }*root,*Null,*Now,Data[130100];<br \/> typedef node* Node;<br \/> Node new_node(int k)<br \/> {<br \/>  Now-&gt;c[0]=Now-&gt;c[1]=Null;<br \/>  Now-&gt;rev=false;Now-&gt;s=1;<br \/>  Now-&gt;k=k;return Now++;<br \/> }<br \/> void rev(Node t)<br \/> {<br \/>  if(t==Null) return;<br \/>  t-&gt;rev^=1;<br \/>  swap(t-&gt;c[0],t-&gt;c[1]);<br \/>  t-&gt;c[0]-&gt;d=0;<br \/>  t-&gt;c[1]-&gt;d=1;<br \/> }<br \/> void pus(Node t)<br \/> {<br \/>  if(t-&gt;rev)<br \/>   rev(t-&gt;c[0]),rev(t-&gt;c[1]);<br \/>  t-&gt;rev=false;<br \/> }<br \/> void upd(Node t)<br \/> {<br \/>  t-&gt;s=t-&gt;c[0]-&gt;s+t-&gt;c[1]-&gt;s+1;<br \/> }<br \/> void rot(Node t)<br \/> {<br \/>  Node p=t-&gt;p;<br \/>  pus(p);pus(t);bool d=t-&gt;d;<br \/>  p-&gt;sc(t-&gt;c[!d],d);<br \/>  p-&gt;p-&gt;sc(t,p-&gt;d);<br \/>  t-&gt;sc(p,!d);<br \/>  upd(p);upd(t);<br \/>  if(p==root) root=t;<br \/> }<br \/> void spl(Node x,Node f)<br \/> {<br \/>  for(pus(x);x-&gt;p!=f;)<br \/>  {<br \/>   if(x-&gt;p-&gt;p==f) rot(x);<br \/>   else x-&gt;d==x-&gt;p-&gt;d?( rot(x-&gt;p),rot(x) ):( rot(x),rot(x) );  <br \/>  }  <br \/> }<br \/> Node sel(int k)<br \/> {<br \/>  int r;<br \/>  for(Node t=root;;)<br \/>  {  <br \/>   pus(t);<br \/>   r=t-&gt;c[0]-&gt;s;<br \/>   if(r==k) return t;<br \/>   t=t-&gt;c[k&gt;r];<br \/>   if(k&gt;r) k-=r+1;<br \/>  }<br \/> }<br \/> void print(Node t)<br \/> {<br \/>  if(t==Null||!t) return;<br \/>  pus(t);<br \/>  print(t-&gt;c[0]);<br \/>  if(t-&gt;k)<a href=\"http:\/\/www.opengroup.org\/onlinepubs\/009695399\/functions\/printf.html\">printf<\/a>(&quot;%d &quot;,t-&gt;k),fflush(stdout);<br \/>  print(t-&gt;c[1]);<br \/> }<br \/>public:<br \/> void out()<br \/> {<br \/>  print(root);<br \/> }<br \/> splay(int n):n(n)<br \/> { <br \/>  Now=Data;<br \/>  Null=new node;Null-&gt;s=0;<br \/>  root=new_node(0);root-&gt;p=Null;<br \/>  Node p,q=root;<br \/>  for(int i=1;i&lt;=n;i++)<br \/>  {<br \/>   p=new_node(i);<br \/>   q-&gt;sc(p,1);<br \/>   q=p;<br \/>  }<br \/>  Node last=new_node(0);<br \/>  q-&gt;sc(last,1);<br \/>  spl(last,Null);<br \/> }<br \/> void reverse(int l,int r)<br \/> {<br \/>  Node x,y;<br \/>  x=sel(l-1);<br \/>  spl(x,Null);<br \/>  y=sel(r+1);<br \/>  spl(y,root);<br \/>  rev(y-&gt;c[0]);<br \/> }<br \/>}*sp;<br \/>int main()<br \/>{<br \/> int n,m,l,r;cin&gt;&gt;n&gt;&gt;m;<br \/> sp=new splay(n);<br \/> while(m&#8211;)<br \/> {<br \/>  scanf(&quot;%d %d&quot;,&amp;l,&amp;r);<br \/>  sp-&gt;reverse(l,r);<br \/> }<br \/> sp-&gt;out();<br \/>} <\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5c31\u662f\u8bf4\u7ed9\u4f601\u5230n\u4e00\u6392\u6570\u6bcf\u6b21\u628a\u4ecel\u5230r\u7684\u6570\u53cd\u8fc7\u6765\u3002\u3002\u8ba9\u4f60\u8f93\u51fa\u6700\u540e\u7684\u90a3\u5217\u6570\u3002\u3002\u52a8\u6001\u8868\u3002\u3002\u660e\u663e\u7528splay\u3002\u3002\u6700\u8fd1\u521a\u5b66\u4e86splay\uff0c\u723d\u963f\u3002\u3002Code\uff1a#include&lt;cstdio&gt;#include&lt;iostream&gt;#include&lt;algorithm&gt;using namespace std;const int inf=~0U&gt;&gt;1;class splay{ int n; struct node { int k,s; bool d,rev; node*c[2],*p; node(){c[0]=c[1]=p=0;} void sc(node*_c,bool d) {c[d]=_c;_c-&gt;p=this;_c-&gt;d=d;} }*root,*Null,*Now,Data[130100]; typedef node* Node; Node new_node(int k) { Now-&gt;c[0]=Now-&gt;c[1]=Null; Now-&gt;rev=false;Now-&gt;s=1; Now-&gt;k=k;return Now++; } void rev(Node t) { if(t==Null) return; t-&gt;rev^=1; swap(t-&gt;c[0],t-&gt;c[1]); t-&gt;c[0]-&gt;d=0; t-&gt;c[1]-&gt;d=1; } void pus(Node t) { if(t-&gt;rev) rev(t-&gt;c[0]),rev(t-&gt;c[1]); t-&gt;rev=false; } void upd(Node [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts\/62"}],"collection":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=62"}],"version-history":[{"count":0,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts\/62\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=62"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=62"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=62"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}