• hdu 4325 Flowers


    Problem F

    Time Limit: 4000/2000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 332    Accepted Submission(s): 143
    Problem Description
    As is known to all, the blooming time and duration varies between different kinds of flowers. Now there is a garden planted full of flowers. The gardener wants to know how many flowers will bloom in the garden in a specific time. But there are too many flowers in the garden, so he wants you to help him.
     
    Input
    The first line contains a single integer t (1 <= t <= 10), the number of test cases.
    For each case, the first line contains two integer N and M, where N (1 <= N <= 10^5) is the number of flowers, and M (1 <= M <= 10^5) is the query times.
    In the next N lines, each line contains two integer Si and Ti (1 <= Si <= Ti <= 10^9), means i-th flower will be blooming at time [Si, Ti].
    In the next M lines, each line contains an integer Ti, means the time of i-th query.
     
    Output
    For each case, output the case number as shown and then print M lines. Each line contains an integer, meaning the number of blooming flowers.
    Sample outputs are available for more details.
     
    SampleInput
    2
    1 1
    5 10
    4
    2 3
    1 4
    4 8
    1
    4
    6
     
    SampleOutput
    Case #1:
    0
    Case #2:
    1
    2
    1
    //水水噢
    //区间覆盖问题,求某个区间被覆盖几次
    #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #define N 100000 #define lson l,m,k<<1 #define rson m+1,r,k<<1|1 using namespace std; int st[N<<2]; void build(int l,int r,int k) { st[k]=0; if(l==r) return; int m=(l+r)>>1; build(lson); build(rson); } void update(int &L,int &R,int l,int r,int k) { if(L<=l&&R>=r) { st[k]+=1; return ; } int m=(l+r)>>1; if(L<=m) update(L,R,lson); if(R>m) update(L,R,rson); } void query(int &i,int l,int r,int k) { if(l==r) { printf("%d\n",st[k]); return; } if(st[k]) { st[k<<1]+=st[k]; st[k<<1|1]+=st[k]; st[k]=0; } int m=(l+r)>>1; if(i<=m) query(i,lson); else query(i,rson); } int main() { int T,t=1; int i,n,m; int s,e; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); build(1,N,1); printf("Case #%d:\n",t++); for(i=1;i<=n;i++) { scanf("%d%d",&s,&e); update(s,e,1,N,1); } while(m--) { scanf("%d",&s); query(s,1,N,1); } } return 0; }
  • 相关阅读:
    第八章 用通配符进行过滤
    第七章 数据过滤
    第六章 过滤数据
    第五章 排序和检索数据
    第四章 检索数据
    MySql 首记
    Effective C++ 6.继承与面向对象设计
    Effective C++ 5.实现
    ~~函数基础(五):内置函数~~
    ~~函数基础(四):递归函数~~
  • 原文地址:https://www.cnblogs.com/372465774y/p/2621484.html
Copyright © 2020-2023  润新知