zoukankan      html  css  js  c++  java
  • POJ 3067-Japan-树状数组

    把桥按照左边点坐标排序,左边相同按照右边。

    然后依次插入树状数组,getsum就是在这个桥之前的桥,也就是这个桥产生的交点。

     1 #include <cstdio>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <vector>
     5 
     6 using namespace std;
     7 
     8 const int maxn = 2e3+100;
     9 int N,M,K,T;
    10 
    11 struct line{
    12     int l,r;
    13     line(int _l=0,int _r=0) :l(_l),r(_r){}
    14 
    15     bool operator < (const line &b) const
    16     {
    17         if(l == b.l) return r < b.r;
    18         else return l < b.l;
    19     }
    20 };
    21 
    22 vector <line> highway;
    23 int c[maxn];
    24 
    25 int lowbit(int x)
    26 {
    27     return x&(-x);
    28 }
    29 
    30 void update(int x)
    31 {
    32     while(x <= M)
    33     {
    34         c[x] += 1;
    35         x += lowbit(x);
    36     }
    37 }
    38 
    39 long long getsum(int x)
    40 {
    41     long long sum = 0;
    42     while(x >= 1)
    43     {
    44         sum += c[x];
    45         x -= lowbit(x);
    46     }
    47     return sum;
    48 }
    49 
    50 int main()
    51 {
    52     scanf("%d",&T);
    53     int cas = 0;
    54     while(T--)
    55     {
    56         scanf("%d%d%d",&N,&M,&K);
    57         highway.clear();
    58         memset(c,0,sizeof c);
    59         for(int i=0,l,r;i<K;i++)
    60         {
    61             scanf("%d%d",&l,&r);
    62             highway.push_back(line(l,r));
    63         }
    64         sort(highway.begin(),highway.end());
    65 
    66         long long res = 0;
    67         for(int i=0;i<highway.size();i++)
    68         {
    69             update(highway[i].r);
    70             res += i - getsum(highway[i].r) + 1;
    71         }
    72 
    73         printf("Test case %d: %lld
    ",++cas,res);
    74     }
    75 }
  • 相关阅读:
    2019-1-7 水晶报表
    2018-12-25工作记录 空白行===水晶报表
    2018-7-26-随笔-泛型
    2018-7-20-随笔-转换
    2018-7-18-随笔-接口
    2018-7-17-随笔-params和ref、out用法、事件访问器
    VPS安装metasploit-framework
    Mimiktaz抓取本机密码
    msfvenom生成各类Payload命令
    docker容器开启ssh远程登录
  • 原文地址:https://www.cnblogs.com/helica/p/5281503.html
Copyright © 2011-2022 走看看