• hdu4325(线段树)


    http://acm.hdu.edu.cn/showproblem.php?pid=4325

    多校联合3上的题 对线段树还不是太了解 只知道这道题是线段树 打的代码那叫一个纠结啊 。。交上还TLE

    昨天晚上仔细想了想 明白是怎么回事了 就是建一个线段树 找到指定的区间加1 询问的时候 看在哪些区间里 把这些区间都加起来

    w定义的int类型的 一直出错 后来一想 存不了 改了就对了

    View Code
     1 #include<stdio.h>
     2 #include<string.h>
     3 #define N 100001
     4 __int64 s[4*N],re;
     5 void build(int l,int r,__int64 w)
     6 {
     7     if(l==r)
     8     {
     9         s[w] = 0;
    10         return ;
    11     }
    12     int m = (l+r)/2;
    13     build(l,m,2*w);
    14     build(m+1,r,2*w+1);
    15 }
    16 void add(int a,int b,int l,int r,__int64 w)
    17 {
    18     if(a<=l&&b>=r)
    19     {
    20         s[w]++;
    21         //printf("%I64d %d]",w,s[w]);
    22         return ;
    23     }
    24     if(l==r)
    25         return ;
    26     int m = (l+r)/2;
    27     if(a<=m)
    28         add(a,b,l,m,2*w);
    29     if(b>m)
    30         add(a,b,m+1,r,2*w+1);
    31 }
    32 void getsum(int p,int l,int r,__int64 w)
    33 {
    34     if(p>=l&&p<=r)
    35     {
    36         re+=s[w];
    37        // printf("%I64d %d]",w,s[w]);
    38     }
    39     if(l==r)
    40         return ;
    41     int m = (l+r)/2;
    42     if(p>m)
    43         getsum(p,m+1,r,2*w+1);
    44     else
    45         getsum(p,l,m,2*w);
    46 }
    47 int main()
    48 {
    49     int i,k = 0,n,m,t,a,b;
    50     scanf("%d",&t);
    51     while(t--)
    52     {
    53         k++;
    54         memset(s,0,sizeof(s));
    55         scanf("%d%d", &n,&m);
    56         build(1,N,1);
    57         for(i = 1 ; i <= n ; i++)
    58         {
    59             scanf("%d%d", &a,&b);
    60             add(a,b,1,N,1);
    61         }
    62         printf("Case #%d:\n",k);
    63         for(i = 1 ;i <= m ; i++)
    64         {
    65             scanf("%d",&a);
    66             re = 0;
    67             getsum(a,1,N,1);
    68             printf("%I64d\n",re);
    69         }
    70     }
    71     return 0;
    72 }
  • 相关阅读:
    搭建vue开发环境的步骤
    widow怎么结束某端口占用
    替换数据库表中某个代码段中某个字段的某一段字符串sql
    sql优化
    scssmap对象访问
    IntelliJ IDEA 和 webstorm更换主题
    css滚动条样式
    redis set
    【LeetCode】128. 最长连续序列
    第二章 模型评估
  • 原文地址:https://www.cnblogs.com/shangyu/p/2617753.html
Copyright © 2020-2023  润新知