zoukankan      html  css  js  c++  java
  • 牛客模拟、差分题---校门外的树

    校门外的树

    模拟写法

    • 把在区间的所有都标记一下,没标记的计数
    • 这个题数据范围不是很大,可以这样
    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int maxn=1e4+2;
    
    int cnt[maxn];
    int main(){
      	int l,m;cin>>l>>m;
      	while(m--){
      		int a,b;cin>>a>>b;
      		for(int i=a;i<=b;i++) cnt[i]++;
    	}
    	int ans=0;
    	for(int i=0;i<=l;i++) if(!cnt[i]) ans++;
    	cout<<ans<<"
    ";
        return 0;
    }
    
    

    差分写法

    • 适用于数据范围大的
    • 差分只用把端点处变化一下,eg:区间里面的树都-1(默认0为有树)
    • 最后求原数组,差分前缀和化,把数组上所有的0计数
    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int maxn=1e4+2;
    
    int q[maxn],a[maxn];
    int main(){
        int l,m,x,y;cin>>l>>m;
        for(int i=1;i<=m;i++){
        	cin>>x>>y;
        	q[x]-=1;
        	q[y+1]+=1;
    	}
    	int ans=0;
    	a[0]=q[0];
    	for(int i=1;i<=l;i++) a[i]=a[i-1]+q[i];
    	for(int i=0;i<=l;i++){
    		if(!a[i]) ans++;
    	}
    	cout<<ans<<"
    ";
        return 0;
    }
    
  • 相关阅读:
    6-1面向对象
    5-1模块
    python随机数
    4-5目录
    4-4内置函数
    4-3迭代器和生成器
    4-1装饰器1
    4-2装饰器2
    3-4函数-全局变量
    3-5递归-函数
  • 原文地址:https://www.cnblogs.com/bingers/p/13175286.html
Copyright © 2011-2022 走看看