10分求助,样例的输出结果是对的

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

dfy666 @ 2024-01-29 23:07:40

#include<iostream>
#include<cstring>
using namespace std;
int main() {
    int l, m, arr[100];
    cin >> l >> m;
    memset(arr, 0, sizeof(arr));
    for (int i = 0;i < m * 2 ;i++) {
        cin >> arr[i];
    }
    int tree[10001];
    memset(tree, 0, sizeof(tree));
    memset(tree, -1, (l + 1) * 4);
    for (int i = 0;arr[i] != 0;i += 2) {
        for (int j = arr[i];j <= arr[i + 1];j++) {
            tree[j] = 0;
        }
    }
    int sum = 0;
    for (int i = 0;i < l + 1;i++) {
        sum += tree[i];
    }
    cout << sum * (-1);
    return 0;
}

by study_Zzz @ 2024-01-30 19:45:10


#include <bits/stdc++.h>
using namespace std;
int l, m, u, x, sum, a[10000+10];//a[i]=1 
int main(){
    cin >> l >> m;
    for(int i=0; i<=l; ++i){
        a[i]=1;
    }
    for(int i=1; i<=m; ++i){
        cin >> u >> x;
        for(int j=u; j<=x; ++j){
            a[j]=0;
        }
    }
    for(int i=0; i<=l; ++i){
        if(a[i]==1){
            sum+=1;
        }
    }
    cout << sum << endl;
}```

by study_Zzz @ 2024-01-30 19:56:40

就是,在a这个数组里,如果有数,就是1, 否则就是0,然后输入u和o, 
for(int j=u; j<=o; ++j){
            a[j]=0;
        }
u和o之间的数变成0,最后用for循环判断再输出就可以了

by study_Zzz @ 2024-01-30 19:57:13

就是,在a这个数组里,如果有数,就是1, 否则就是0,然后输入u和o, 
for(int j=u; j<=o; ++j){
    a[j]=0;
}
u和o之间的数变成0,最后用for循环判断再输出就可以了

by kotoamatsukami @ 2024-01-31 17:18:28

就是,在a这个数组里,如果有数,就是1, 否则就是0,然后输入u和o, for(int j=u; j<=o; ++j){ a[j]=0; } u和o之间的数变成0,最后用for循环判断再输出就可以了


by kotoamatsukami @ 2024-01-31 17:19:28

就是,在a这个数组里,如果有数,就是1, 否则就是0,然后输入u和o, 
for(int j=u; j<=o; ++j){
    a[j]=0;
}
u和o之间的数变成0,最后用for循环判断再输出就可以了

by dfy666 @ 2024-02-19 09:42:12

@Leo329 谢谢!


by dfy666 @ 2024-02-19 09:42:37

@zhc123bc 感谢感谢


|