[bzoj1106] [POI2007]立方体大作战tet

Posted czllgzmzl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[bzoj1106] [POI2007]立方体大作战tet相关的知识,希望对你有一定的参考价值。

  两对数中间相交应该是可以随便取得。。如果一对数被包含的话,就应该先选这对数。

  按顺序读入,凑成一对数就扔掉,树状数组更新对其他位置的影响。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdlib>
 5 using namespace std;
 6 const int maxn=50023;
 7 int t[maxn<<1],pre[maxn];
 8 int i,j,k,n,m,ans;
 9  
10 inline void del(int x){while(x<=n)t[x]--,x+=x&-x;}
11 inline void add(int x){while(x<=n)t[x]++,x+=x&-x;}
12 inline int get(int x){int sm=0;while(x)sm+=t[x],x-=x&-x;return sm;}
13 int ra;char rx;
14 inline int read(){
15     rx=getchar(),ra=0;
16     while(rx<\'0\'||rx>\'9\')rx=getchar();
17     while(rx>=\'0\'&&rx<=\'9\')ra*=10,ra+=rx-48,rx=getchar();return ra;
18 }
19 int main(){
20     n=read()<<1;
21     for(i=1;i<=n;i++){
22         j=read();
23         if(!pre[j])pre[j]=i,add(i);else
24             ans+=get(i)-get(pre[j]-1)-1,
25             del(pre[j]);
26     }
27     printf("%d\\n",ans);
28 }
View Code

 

以上是关于[bzoj1106] [POI2007]立方体大作战tet的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 1106 [POI2007]立方体大作战tet(树状数组)

bzoj1106([POI2007]立方体大作战tet)(树状数组)

BZOJ 1106 立方体大作战

[POI2007]立方体大作战tet

bzoj1106 树状数组

BZOJ 1109: [POI2007]堆积木Klo