1. 程式人生 > 其它 >寒假每日一題day7 AcWing 422. 校門外的樹(三種寫法的區間合併)線段樹寫法待補

寒假每日一題day7 AcWing 422. 校門外的樹(三種寫法的區間合併)線段樹寫法待補

技術標籤:貪心&&暴力

422. 校門外的樹

題意:

給你一個數軸,在軸上都有點,原本每個點上都有樹。
現在給你m個區間,在這些區間覆蓋的點上沒有樹。

最後剩下多少樹。


思路1(直接暴力)

複雜度O(nm) ,m為區間長度
題目的資料小可以直接暴力。
在這裡插入圖片描述
每讀入一個區間暴力標記即可。

AC1

# include <bits/stdc++.h>

using namespace std;

const int N = 1e4+10;
int x[N];

int main(){
    int l, m;
    cin>>l>>
m; for(int i = 1; i <= m; i ++ ){ int a, b; cin>>a>>b; for(int j = a; j <= b; j ++ )x[j] = 1; } int ans = 0; for(int i = 0; i <= l; i ++ )ans+=(!x[i]); cout<<ans<<endl; return 0; }

思路2(差分)

複雜度O(m) ,m為區間長度
差分。

AC2

# include
<bits/stdc++.h>
using namespace std; const int N = 1e4+10; int a[N]; int main(){ int n, m; cin>>n>>m; while(m--){ int l, r; cin>>l>>r; a[l]++; a[r+1]--; } int res = !a[0]; for(int i = 1; i <= n; i ++ )res += !(a[i]+=a[i-
1]); cout<<res<<endl; return 0; }

思路3(對區間進行排序)

複雜度O(nlogn) ,n為區間個數

AC3

/*
皮卡丘衝鴨!
へ     /|
  /\7    ∠_/
  / │   / /
 │ Z _,< /   /`ヽ
 │     ヽ   /  〉
  Y     `  /  /
 イ● 、 ●  ⊂⊃〈  /
 ()  へ    | \〈
  >ー 、_  ィ  │ //
  / へ   / ノ<| \\
  ヽ_ノ  (_/  │//
  7       |/
  >―r ̄ ̄`ー―_
*/
#include <iostream>
#include <bits/stdc++.h>
#define For(i,x,y) for(int i=(x); i<=(y); i++)
#define fori(i,x,y) for(int i=(x); i<(y); i++)
#define rep(i,y,x) for(int i=(y); i>=(x); i--)
#define mst(x,a) memset(x,a,sizeof(x))
#define pb push_back
#define sz(a) (int)a.size()
#define mp make_pair
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pair<int,int>pa;
typedef pair<ll,ll>pai;
const int N = 1E5+10;
pa seg[N];
int main()
{
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int n, m;
    cin>>n>>m;
    For(i,1,m)cin>>seg[i].fi>>seg[i].se;
    sort(seg+1,seg+m);
    int res = n+1;
    int st = seg[1].fi, ed = seg[1].se; 
    For(i,2,m){
        if(seg[i].fi<=ed)ed=max(ed,seg[i].se);
        else {
            res -= ed-st+1;
            st = seg[i].fi;
            ed = seg[i].se;
        }
    }
    res -= ed-st+1;
    cout<<res<<endl;
    return 0;
}


思路4 線段樹or樹狀陣列。

大佬的題解


思路5 珂朵莉樹

大佬的題解傳送門