只有前两个WA其他全部AC什么情况。。?

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

ALittleS0v1etCAT @ 2023-08-30 21:34:45

#include <iostream>

using namespace std;

int main()
{
    int length,numOfSections; //数组长度,区间个数
    cin >> length;
    bool* trees = new bool[length]; // 利用指针声明动态变量
    for (size_t i = 0; i < length; i++) // 初始化,全部设为true
    {
        trees[i] = true;
    }
    cin >> numOfSections;
    for (size_t i = 0; i < numOfSections; i++) // 输入区间部分
    {
        int startOfSection=0,endOfSection=0; // 开始坐标,结束坐标
        cin >> startOfSection;
        cin >> endOfSection;
        for (size_t j = startOfSection; j < endOfSection; j++) // 循环将区间内的树设为false
        {
            trees[j] = false;
        }
    }
    int numOfTreesLeft=0; // 统计剩下的树
    for (size_t i = 0; i < length; i++)
    {
        if (trees[i]) // 由于数组类型是bool,所以直接利用条件判断累加
        {
            ++numOfTreesLeft; // 前++似乎效率更高
        }

    }
    cout << numOfTreesLeft; // 输出
    return 0;
}

输出:


by ALittleS0v1etCAT @ 2023-08-30 21:38:35

@hui_cat 是C++14标准的代码


by junjie_zhao @ 2023-08-30 21:50:05

#include<iostream>
using namespace std;
int main()
{
    int l,m,sum=0;
    cin>>l>>m;
    bool a[l];
    for(int i=0;i<=l;i++)
    {
        a[i]=1;
    }
    int x,y;
    for(int i=0;i<m;i++)
    {
        cin>>x>>y;
        for(int j=x;j<=y;j++)
        {
            a[j]=0;
        }
    }
    for(int i=0;i<=l;i++)
    {
        if(a[i])
        {
            sum++;
        }
    }
    cout<<sum;
    return 0;
}

by Withershine @ 2023-08-30 22:00:29

#include <iostream>

using namespace std;

int main()
{
    int length,numOfSections; //数组长度,区间个数
    cin >> length;
    bool* trees = new bool[10005]; // 利用指针声明动态变量
    //这里补个等号
    for (size_t i = 0; i <= length; i++) // 初始化,全部设为true
    {
        trees[i] = true;
    }
    cin >> numOfSections;
    for (size_t i = 0; i < numOfSections; i++) // 输入区间部分
    {
        int startOfSection=0,endOfSection=0; // 开始坐标,结束坐标
        cin >> startOfSection;
        cin >> endOfSection;
        //这里也补个等号
        for (size_t j = startOfSection; j <= endOfSection; j++) // 循环将区间内的树设为false
        {
            trees[j] = false;
        }
    }
    int numOfTreesLeft=0; // 统计剩下的树
    //这里也是
    for (size_t i = 0; i <= length; i++)
    {
        if (trees[i]) // 由于数组类型是bool,所以直接利用条件判断累加
        {
            ++numOfTreesLeft; // 前++似乎效率更高
        }

    }
    cout << numOfTreesLeft; // 输出
    return 0;
}

by Withershine @ 2023-08-30 22:02:11

原题中树的编号是 [1,l](包括 1l)。


by fluhang_ @ 2023-08-31 10:03:47

???

~~太复杂了- ~~```

<#include<bits/stdc++.h> using namespace std; long long qw[100000]; int main(){ long long a,s,d,f,g,h=0; cin>>a>>s; for (int i=1;i<=s;i++) { cin>>d>>f;//输入范围 for (int i=d;i<=f;i++) { qw[i]=1;//包含在范围内都等于1 } } for (int i=0;i<=a;i++)//起始值是从0开始的!!! { if (qw[i]==0) h++; } cout<<h;//输出答案······ return 0; }


|