zoukankan      html  css  js  c++  java
  • 洛谷 P2184 贪婪大陆

    题面

        又是一类比较套路的题呢?

        假如我们的地雷都表示成 [l[i],r[i]] ,要求[L,R],那么就相当于要求满足 (l[i]<=R && r[i]>=L)的i的个数。。。。。

        直接求不太好求,看起来又不太能容斥?? 别忘了 l[i]<=r[i] && L<=R 是隐藏条件,于是我们可以得出

        满足 (l[i]<=R && r[i]>=L)的i的个数

        就是

        (l[i]<=R)的i的个数

        减去

        (r[i]<L)的i的个数

    (可以尝试画图验证)

        所以直接树状数组维护前缀和即可。

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N=100005;
    
    inline int read(){
        int x=0; char ch=getchar();
        for(;!isdigit(ch);ch=getchar());
        for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';
        return x;
    }
    
    int f[2][N],n,m,l,r,opt;
    
    inline void add(int T,int x){
    	for(;x<=n;x+=x&-x) f[T][x]++;
    }
    
    inline int query(int T,int x){
    	int an=0;
    	for(;x;x-=x&-x) an+=f[T][x];
    	return an;
    }
    
    int main(){
    	for(n=read(),m=read();m;m--){
    		opt=read(),l=read(),r=read();
    		if(opt==1) add(0,l),add(1,r);
    		else printf("%d
    ",query(0,r)-query(1,l-1));
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    Explain 索引优化分析
    组合索引与前缀索引
    MySQL 索引的类型
    MySQL 字符集及校验规则
    MySQL 连接查询
    DQL 数据查询语言
    DML 数据操纵语言
    DCL 数据控制语言
    DDL 数据定义语言
    蓝桥杯大学B组省赛2020模拟赛(一)题解与总结
  • 原文地址:https://www.cnblogs.com/JYYHH/p/11290941.html
Copyright © 2011-2022 走看看