为什么要+1啊

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

woshilaoliu7 @ 2023-10-26 12:34:06

代码:

#include<iostream>
#include<cstdio>
#include<map> 
using namespace std;
map<int, int>mp;
bool b[10005]={0};
int main(){
    int l,m,a,sum=0;
    cin >> l >> m;
    for(int i=1;i<=m;i++){
        cin >> a;
        cin >> mp[a];//起始值a,终止值mp[a] 
    }
    for(int i=0;i<l;i++){
        if(mp[i]!=0){
            int t=i;
            for(int j=t;j<=mp[t];j++){
                if(b[j]==0){
                    sum++;
                }
                b[j]=1;
            }
        }
    }
    cout << l-sum+1;//加1全AC,不加全WA
    return 0;
}

by 2021zjhs005 @ 2023-10-26 12:52:56

马路的长度是 [0,L],而[1,L]L 个数,这样位置 0 的树就没有被计算。

公式为 总棵树 减去 移除棵树,也就是 L+1-sum。这样把 +1 放在后面也是可以的。


|