90 1#错了

P1047 [NOIP2005 普及组] 校门外的树

RaymondA @ 2024-05-01 20:36:24

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n, m, x, l;
    cin >> n >> m;
    bool a[n+100];
    for(int i = 1; i <= n; i++) a[i] = true;
    for(int i = 1; i <= m; i++){
        cin >> x >> l;
        for(int j = x; j <= l; j++){
            a[j] = false;
        }
    }
    int sum=0;
    for(int i = 1; i <= n; i++){
        if(a[i] == true) sum++;
    }
    if(sum!=0) cout << sum+1;
    else cout << sum;
    return 0;
}

by eHand_som @ 2024-05-04 12:58:49

#include<iostream>
#include<vector>
using namespace std;
int main(){
    int m,l,trees=0;
    cin>>l>>m;
    vector<bool> t(l,true);
    for(int i=1;i<=m;i++){
        int u,v;
        cin>>u>>v;
        for(int j=u;j<=v;j++){
            t[j] = false;
        }
    }
    for(int i=0;i<=l;i++){
        if(t[i]){
            trees++;
        }
    }
    cout<<trees;
    return 0;
}

定义一个长度为l的bool数组(全部初始化为true),重复执行m次输入u和v,在循环中把bool数组中u到v全部设置为false

接着便利t就行了 因为t是bool值,所以不用在if中写

if(t[i]==true)

直接写

if(t[i])

就行了(如果t[i]项为true,if就会执行trees++)


|