<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      書山有徑勤為路>>>>>>>>

      <<<<<<<<學海無涯苦作舟!

      感悟線段樹

      其實線段樹的數據結構沒什么可說的,但是怎么用好它就有得說了。

      具體的來說就是:

      首先就是有段關系了,這個是第一位的。

      接著就是有大小關系了,這個是第二位的。

      再者就是數據量大,這個是次要的。

      只要滿足了這三個條件,就是用線段樹的時候了。

      如何理解段呢?比如說讓你統計小于200的數據有多少個。這個就是段了。

      至于大小就是小于200的200了。

      (1)1 3 2 4 5 63 563 23 46 56 23 455 …… 888 這個例子是落在888以前的。

      (2)當然還是段中段,這個就不解釋了。

       

      下面來貼出一道相關的題目。

      http://acm.swust.edu.cn/oj/contest/29/825/

       

      View Code
      #include "iostream"
      #include "cstdio"
      #include "cstring"
      #include "string"
      #include "algorithm"
      using namespace std;
      #define Maxn 100005
      struct Animals
      {
      int s, v;
      bool Flag;
      };
      Animals RT[Maxn*2];
      bool Cmp(Animals a, Animals b)
      {
      return (a.s<b.s);
      }
      struct Node
      {
      int Left, Right, Sum;
      };
      Node Tree[Maxn*4];
      void BTree(int x, int y, int p)
      {
      Tree[p].Left = x;
      Tree[p].Right = y;
      Tree[p].Sum = 0;
      if(x<y)
      {
      int Mid = (x+y)/2;
      BTree(x, Mid, p<<1); //2*p
      BTree(Mid+1, y, p<<1|1); //2*p+1 //mid+1哈,不然stack overflow
      }
      }
      void Add(int x, int p)
      {
      if(Tree[p].Left==Tree[p].Right && Tree[p].Left==x)
      {
      Tree[p].Sum=(Tree[p].Sum+1)%2012;
      return;
      }
      int Mid=(Tree[p].Left+Tree[p].Right)/2;
      if(x<=Mid) Add(x, p<<1);
      else Add(x, p<<1|1);
      Tree[p].Sum = (Tree[p<<1].Sum+Tree[p<<1|1].Sum)%2012;
      }
      long long Query(int x, int y, int p)
      {
      if(Tree[p].Left==x && Tree[p].Right==y) return Tree[p].Sum;
      int Mid = (Tree[p].Left+Tree[p].Right)/2;
      if(y<=Mid) return Query(x, y, p<<1);
      else if(x>=Mid+1) return Query(x, y, p<<1|1);
      else return (Query(x, Mid, p<<1)+Query(Mid+1, y, p<<1|1))%2012;
      }
      int N;
      int main()
      {
      int Max=0;
      while(scanf("%d", &N)!=EOF)
      {
      for(int i=0; i<N; i++)
      {
      scanf("%d%d", &RT[i].s, &RT[i].v);
      RT[i].Flag = true;
      Max = max(Max, RT[i].v);
      }
      for(int i=N; i<2*N; i++)
      {
      scanf("%d%d", &RT[i].s, &RT[i].v);
      RT[i].Flag = false;
      Max = max(Max, RT[i].v);
      }
      sort(RT, RT+2*N, Cmp);
      BTree(1, Max, 1);
      int Ans = 0;
      for(int i=0; i<2*N; i++)
      {
      if(RT[i].Flag)
      {
      if(RT[i].v==Max) continue;
      Ans=(Ans+Query(RT[i].v+1, Max, 1))%2012;
      }
      else Add(RT[i].v, 1);
      }
      printf("%d\n", Ans);
      }
      }



      posted on 2012-03-31 22:44  More study needed.  閱讀(307)  評論(0)    收藏  舉報

      導航

      書山有徑勤為路>>>>>>>>

      <<<<<<<<學海無涯苦作舟!

      主站蜘蛛池模板: 精品国产亚洲一区二区三区在线观看 | 亚洲精品~无码抽插| 欧美乱大交aaaa片if| 粉嫩一区二区三区国产精品| 日本高清在线播放一区二区三区 | 国产午夜精品福利久久| 永善县| 中文激情一区二区三区四区| 纯肉高h啪动漫| 丰满少妇熟乱xxxxx视频| 福利一区二区1000| 激情亚洲一区国产精品| 又黄又刺激又黄又舒服| 亚洲综合另类小说色区一| 国产伦精品一区二区三区| 会理县| 国产一精品一av一免费| 日韩精品国产二区三区| 动漫AV纯肉无码AV电影网| 亚洲一区二区三区蜜桃臀| 亚洲欧洲自拍拍偷午夜色| 成人看的污污超级黄网站免费| 久久精品亚洲精品国产色婷| 久久国产乱子精品免费女| 综合区一区二区三区狠狠| xx性欧美肥妇精品久久久久久| 国模少妇无码一区二区三区| 亚洲亚洲人成综合网络 | 亚洲欧美偷国产日韩| 国产高清在线男人的天堂| 国产在线国偷精品产拍| 国产精品v片在线观看不卡| 夜夜添无码一区二区三区| 久久精品国产亚洲av热一区| 亚洲AV日韩AV激情亚洲| 国产中文一区卡二区不卡| 欧美乱大交xxxxx疯狂俱乐部| 国产精品一二三区久久狼| 国色天香中文字幕在线视频| 乱女乱妇熟女熟妇综合网| 亚洲人成网网址在线看|