{"id":295,"date":"2010-07-04T01:29:00","date_gmt":"2010-07-03T17:29:00","guid":{"rendered":"http:\/\/localhost\/?p=295"},"modified":"2010-07-04T01:29:00","modified_gmt":"2010-07-03T17:29:00","slug":"cqoi2010_internal_white_spots","status":"publish","type":"post","link":"https:\/\/www.shuizilong.com\/wjmzbmr\/?p=295","title":{"rendered":"[Cqoi2010]\u5185\u90e8\u767d\u70b9"},"content":{"rendered":"\n<p>[Cqoi2010]\u5185\u90e8\u767d\u70b9 <\/p>\n<p>Time Limit:10000MS  Memory Limit:65536K<br \/>Total Submit:63 Accepted:32 <br \/>Case Time Limit:2000MS<\/p>\n<p><strong>Description <\/strong><\/p>\n<p>\u65e0\u9650\u5927\u6b63\u65b9\u5f62\u7f51\u683c\u91cc\u6709n\u4e2a\u9ed1\u8272\u7684\u9876\u70b9\uff0c\u6240\u6709\u5176\u4ed6\u9876\u70b9\u90fd\u662f\u767d\u8272\u7684\uff08\u7f51\u683c\u7684\u9876\u70b9\u5373\u5750\u6807\u4e3a\u6574\u6570\u7684\u70b9\uff0c\u53c8\u79f0\u6574\u70b9\uff09\u3002\u6bcf\u79d2\u949f\uff0c\u6240\u6709\u5185\u90e8\u767d\u70b9\u540c\u65f6\u53d8\u9ed1\uff0c\u76f4\u5230\u4e0d\u5b58\u5728\u5185\u90e8\u767d\u70b9\u4e3a\u6b62\u3002\u4f60\u7684\u4efb\u52a1\u662f\u7edf\u8ba1\u6700\u540e\u7f51\u683c\u4e2d\u7684\u9ed1\u70b9\u4e2a\u6570\u3002 <br \/>\u5185\u90e8\u767d\u70b9\u7684\u5b9a\u4e49\uff1a\u4e00\u4e2a\u767d\u8272\u7684\u6574\u70b9P(x,y)\u662f\u5185\u90e8\u767d\u70b9\u5f53\u4e14\u4ec5\u5f53P\u5728\u6c34\u5e73\u7ebf\u7684\u5de6\u8fb9\u548c\u53f3\u8fb9\u5404\u81f3\u5c11\u6709\u4e00\u4e2a\u9ed1\u70b9\uff08\u5373\u5b58\u5728x1 &lt; x &lt; x2\u4f7f\u5f97(x1,y)\u548c(x2,y)\u90fd\u662f\u9ed1\u70b9\uff09\uff0c\u4e14\u5728\u7ad6\u76f4\u7ebf\u7684\u4e0a\u8fb9\u548c\u4e0b\u8fb9\u5404\u81f3\u5c11\u6709\u4e00\u4e2a\u9ed1\u70b9\uff08\u5373\u5b58\u5728y1 &lt; y &lt; y2\u4f7f\u5f97(x,y1)\u548c(x,y2)\u90fd\u662f\u9ed1\u70b9\uff09\u3002 <\/p>\n<p><strong>Input <\/strong><\/p>\n<p>\u8f93\u5165\u7b2c\u4e00\u884c\u5305\u542b\u4e00\u4e2a\u6574\u6570n\uff0c\u5373\u521d\u59cb\u9ed1\u70b9\u4e2a\u6570\u3002\u4ee5\u4e0bn\u884c\u6bcf\u884c\u5305\u542b\u4e24\u4e2a\u6574\u6570(x,y)\uff0c\u5373\u4e00\u4e2a\u9ed1\u70b9\u7684\u5750\u6807\u3002\u6ca1\u6709\u4e24\u4e2a\u9ed1\u70b9\u7684\u5750\u6807\u76f8\u540c\uff0c\u5750\u6807\u7684\u7edd\u5bf9\u503c\u5747\u4e0d\u8d85\u8fc7 109\u3002 <\/p>\n<p><strong>Output <\/strong><\/p>\n<p>\u8f93\u51fa\u4ec5\u4e00\u884c\uff0c\u5305\u542b\u9ed1\u70b9\u7684\u6700\u7ec8\u6570\u76ee\u3002\u5982\u679c\u53d8\u8272\u8fc7\u7a0b\u6c38\u4e0d\u7ec8\u6b62\uff0c\u8f93\u51fa-1\u3002 <\/p>\n<p><strong>Sample Input <\/strong><\/p>\n<\/p>\n<p><strong>Sample Output <\/strong><\/p>\n<\/p>\n<p><strong>Source <br \/>\u6ce8\u610f\u5230\u6bcf\u4e2a\u9ed1\u70b9\u53ea\u8981\u5f53\u524d\u4e0d\u80fd\u88ab\u67d3\u9ed1\u4ee5\u540e\u4e5f\u4e0d\u4f1a\u88ab\u67d3\u9ed1\u3002\u3002\u5c31OK\u4e86\u3002\u3002<br \/>\u53ea\u8981\u5f04\u4e2a\u626b\u63cf\u7ebf\u641e\u4e00\u4e0b\uff0c\u518d\u7528\u6811\u72b6\u6570\u7ec4\u7ef4\u62a4\u90e8\u5206\u548c\u5c31OK\u4e86<br \/>\u8be6\u60c5\u89c1\u4ee3\u7801\u5427\u3002\u3002<br \/>Code\uff1a<br \/>#include &lt;vector&gt;<\/strong><br \/>#include &lt;algorithm&gt;<br \/>#include &lt;utility&gt;<br \/>#include &lt;iostream&gt;<br \/>#include &lt;cstdio&gt;<br \/>#include &lt;cmath&gt;<br \/>#include &lt;cstdlib&gt;<br \/>#include &lt;map&gt;<br \/>#include &lt;cstring&gt;<br \/>#include &lt;set&gt;<br \/>#define rep(i,n) for(int i=0;i&lt;n;i++)<br \/>#define pb push_back<br \/><strong>#define Debug(x) cout&lt;&lt;#x&lt;&lt;<\/strong>&quot;=&quot;&lt;&lt;x&lt;&lt;endl;<br \/>#define For(i,l,r) for(int i=l;i&lt;=r;i++)<br \/>#define All(x) x.begin(),x.end()<br \/>const int inf=~0U&gt;&gt;1,maxn=100000;<br \/>using namespace std;<br \/>typedef long long ll;<br \/>typedef unsigned long long ull;<br \/>int n;<br \/>struct Index<br \/>{<br \/>&nbsp;&nbsp;&nbsp;  int A[maxn],n;<br \/>&nbsp;&nbsp;&nbsp;  Index(){n=0;}<br \/>&nbsp;&nbsp;&nbsp;  void Add(int x){A[n++]=x;}<br \/>&nbsp;&nbsp;&nbsp;  void DoIt()<br \/>&nbsp;&nbsp;&nbsp;  {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  sort(A,A+n);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  n=unique(A,A+n)-A;<br \/>&nbsp;&nbsp;&nbsp;  }<br \/>&nbsp;&nbsp;&nbsp;  int operator[](int v)<br \/>&nbsp;&nbsp;&nbsp;  {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return lower_bound(A,A+n,v)-A;<br \/>&nbsp;&nbsp;&nbsp;  }<br \/>}IndexY;<br \/>struct TreeArray<br \/>{<br \/>&nbsp;&nbsp;&nbsp;  int A[maxn],n;<br \/>&nbsp;&nbsp;&nbsp;  TreeArray()<br \/>&nbsp;&nbsp;&nbsp;  {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  memset(A,0,sizeof A);<br \/>&nbsp;&nbsp;&nbsp;  }<br \/>&nbsp;&nbsp;&nbsp;  void SetN(int _n){n=_n;}<br \/>&nbsp;&nbsp;&nbsp;  void Add(int x,int d)<br \/>&nbsp;&nbsp;&nbsp;  {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  for(x++;x&lt;=n;x+=x&amp;-x)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  A[x-1]+=d;<br \/>&nbsp;&nbsp;&nbsp;  }<br \/>&nbsp;&nbsp;&nbsp;  int Sum(int x)<br \/>&nbsp;&nbsp;&nbsp;  {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  int ret=0;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  for(x++;x;x-=x&amp;-x)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ret+=A[x-1];<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return ret;<br \/>&nbsp;&nbsp;&nbsp;  }<br \/>}TA;<br \/>map&lt;int,vector&lt;int&gt; &gt; Ps;<br \/>typedef map&lt;int,vector&lt;int&gt; &gt;::iterator mit;<br \/>int Left[maxn]={},Right[maxn]={};<br \/>void Init()<br \/>{<br \/>&nbsp;&nbsp;&nbsp;  scanf(&quot;%d&quot;,&amp;n);int x,y;<br \/>&nbsp;&nbsp;&nbsp;  rep(i,n)<br \/>&nbsp;&nbsp;&nbsp;  {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  scanf(&quot;%d%d&quot;,&amp;x,&amp;y);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ps[x].pb(y);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  IndexY.Add(y);<br \/>&nbsp;&nbsp;&nbsp;  }<br \/>&nbsp;&nbsp;&nbsp;  IndexY.DoIt();<br \/>&nbsp;&nbsp;&nbsp;  for(mit it=Ps.begin();it!=Ps.end();it++)<br \/>&nbsp;&nbsp;&nbsp;  {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  vector&lt;int&gt;&amp;V=it-&gt;second;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  rep(i,V.size())V[i]=IndexY[V[i]],Right[V[i]]++;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  sort(All(V));<br \/>&nbsp;&nbsp;&nbsp;  }<br \/>}<br \/>#define OK(x) (Left[x]&amp;&amp;Right[x])<br \/>inline void Update(int x,int d)<br \/>{<br \/>&nbsp;&nbsp;&nbsp;  int s=OK(x);<br \/>&nbsp;&nbsp;&nbsp;  if(d==1)Left[x]++;<br \/>&nbsp;&nbsp;&nbsp;  else Right[x]&#8211;;<br \/>&nbsp;&nbsp;&nbsp;  TA.Add(x,OK(x)-s);<br \/>}<br \/>void Solve()<br \/>{<br \/>&nbsp;&nbsp;&nbsp;  ll ans=0;<br \/>&nbsp;&nbsp;&nbsp;  TA.SetN(IndexY.n);<br \/>&nbsp;&nbsp;&nbsp;  for(mit it=Ps.begin();it!=Ps.end();it++)<br \/>&nbsp;&nbsp;&nbsp;  {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  vector&lt;int&gt;&amp;V=it-&gt;second;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  int n=V.size();<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  rep(i,n)Update(V[i],-1);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ans+=TA.Sum(V[n-1])-TA.Sum(V[0]-1);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  rep(i,n)ans-=OK(V[i]);<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  rep(i,n)Update(V[i],1);<br \/>&nbsp;&nbsp;&nbsp;  }<br \/>&nbsp;&nbsp;&nbsp;  cout&lt;&lt;ans+n&lt;&lt;endl;<br \/>}<br \/>int main()<br \/>{<br \/>&nbsp;&nbsp;&nbsp;  \/\/freopen(&quot;in&quot;,&quot;r&quot;,stdin);<br \/>&nbsp;&nbsp;&nbsp;  Init();<br \/>&nbsp;&nbsp;&nbsp;  Solve();<br \/>}<\/p>\n<p>5\u6570\u636e\u8303\u56f436%\u7684\u6570\u636e\u6ee1\u8db3\uff1an &lt; = 50064%\u7684\u6570\u636e\u6ee1\u8db3\uff1an &lt; = 30000100%\u7684\u6570\u636e\u6ee1\u8db3\uff1an &lt; = 10000040 22 0-2 00 -2 <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[Cqoi2010]\u5185\u90e8\u767d\u70b9 Time Limit:10000MS Memory Limit:65536KTotal Submit:63 Accepted:32 Case Time Limit:2000MS Description \u65e0\u9650\u5927\u6b63\u65b9\u5f62\u7f51\u683c\u91cc\u6709n\u4e2a\u9ed1\u8272\u7684\u9876\u70b9\uff0c\u6240\u6709\u5176\u4ed6\u9876\u70b9\u90fd\u662f\u767d\u8272\u7684\uff08\u7f51\u683c\u7684\u9876\u70b9\u5373\u5750\u6807\u4e3a\u6574\u6570\u7684\u70b9\uff0c\u53c8\u79f0\u6574\u70b9\uff09\u3002\u6bcf\u79d2\u949f\uff0c\u6240\u6709\u5185\u90e8\u767d\u70b9\u540c\u65f6\u53d8\u9ed1\uff0c\u76f4\u5230\u4e0d\u5b58\u5728\u5185\u90e8\u767d\u70b9\u4e3a\u6b62\u3002\u4f60\u7684\u4efb\u52a1\u662f\u7edf\u8ba1\u6700\u540e\u7f51\u683c\u4e2d\u7684\u9ed1\u70b9\u4e2a\u6570\u3002 \u5185\u90e8\u767d\u70b9\u7684\u5b9a\u4e49\uff1a\u4e00\u4e2a\u767d\u8272\u7684\u6574\u70b9P(x,y)\u662f\u5185\u90e8\u767d\u70b9\u5f53\u4e14\u4ec5\u5f53P\u5728\u6c34\u5e73\u7ebf\u7684\u5de6\u8fb9\u548c\u53f3\u8fb9\u5404\u81f3\u5c11\u6709\u4e00\u4e2a\u9ed1\u70b9\uff08\u5373\u5b58\u5728x1 &lt; x &lt; x2\u4f7f\u5f97(x1,y)\u548c(x2,y)\u90fd\u662f\u9ed1\u70b9\uff09\uff0c\u4e14\u5728\u7ad6\u76f4\u7ebf\u7684\u4e0a\u8fb9\u548c\u4e0b\u8fb9\u5404\u81f3\u5c11\u6709\u4e00\u4e2a\u9ed1\u70b9\uff08\u5373\u5b58\u5728y1 &lt; y &lt; y2\u4f7f\u5f97(x,y1)\u548c(x,y2)\u90fd\u662f\u9ed1\u70b9\uff09\u3002 Input \u8f93\u5165\u7b2c\u4e00\u884c\u5305\u542b\u4e00\u4e2a\u6574\u6570n\uff0c\u5373\u521d\u59cb\u9ed1\u70b9\u4e2a\u6570\u3002\u4ee5\u4e0bn\u884c\u6bcf\u884c\u5305\u542b\u4e24\u4e2a\u6574\u6570(x,y)\uff0c\u5373\u4e00\u4e2a\u9ed1\u70b9\u7684\u5750\u6807\u3002\u6ca1\u6709\u4e24\u4e2a\u9ed1\u70b9\u7684\u5750\u6807\u76f8\u540c\uff0c\u5750\u6807\u7684\u7edd\u5bf9\u503c\u5747\u4e0d\u8d85\u8fc7 109\u3002 Output \u8f93\u51fa\u4ec5\u4e00\u884c\uff0c\u5305\u542b\u9ed1\u70b9\u7684\u6700\u7ec8\u6570\u76ee\u3002\u5982\u679c\u53d8\u8272\u8fc7\u7a0b\u6c38\u4e0d\u7ec8\u6b62\uff0c\u8f93\u51fa-1\u3002 Sample Input Sample Output Source \u6ce8\u610f\u5230\u6bcf\u4e2a\u9ed1\u70b9\u53ea\u8981\u5f53\u524d\u4e0d\u80fd\u88ab\u67d3\u9ed1\u4ee5\u540e\u4e5f\u4e0d\u4f1a\u88ab\u67d3\u9ed1\u3002\u3002\u5c31OK\u4e86\u3002\u3002\u53ea\u8981\u5f04\u4e2a\u626b\u63cf\u7ebf\u641e\u4e00\u4e0b\uff0c\u518d\u7528\u6811\u72b6\u6570\u7ec4\u7ef4\u62a4\u90e8\u5206\u548c\u5c31OK\u4e86\u8be6\u60c5\u89c1\u4ee3\u7801\u5427\u3002\u3002Code\uff1a#include &lt;vector&gt;#include &lt;algorithm&gt;#include &lt;utility&gt;#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;cmath&gt;#include &lt;cstdlib&gt;#include &lt;map&gt;#include &lt;cstring&gt;#include &lt;set&gt;#define rep(i,n) for(int i=0;i&lt;n;i++)#define pb push_back#define Debug(x) cout&lt;&lt;#x&lt;&lt;&quot;=&quot;&lt;&lt;x&lt;&lt;endl;#define For(i,l,r) for(int i=l;i&lt;=r;i++)#define All(x) x.begin(),x.end()const int [&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\/295"}],"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=295"}],"version-history":[{"count":0,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=\/wp\/v2\/posts\/295\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shuizilong.com\/wjmzbmr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}