题目:题目详情 - 校门外的树 - XAZXOJ //就是第一个数据的问题,要么第一个过了其他不过要么其他过了第一个不过(输出多加个1)不知道该咋整

#include <bits/stdc++.h>
using namespace std;
int tree[10005]; 
int m,n,cnt=0,a1,b1,a=0;
int main ()
{
	cin>>m;
	for(int i=1;i<=m;i++)
		tree[i]=1;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a1>>b1;
		for(int p=a1;p<=b1;p++)
			{
				tree[p]=-1;
			}
		
	}
	for(int i=1;i<=m;i++)
	{
		if(tree[i]==1)
		cnt++;
	}
	cout<<cnt+1;
	return 0;
}

1 comments

  • @ 2024-1-28 15:02:19

    树的区间是 0-m ,一共有 m + 1 棵树,你直接这样就好了:

    #include <bits/stdc++.h>
    using namespace std;
    int tree[10005]; 
    
    int m,n,cnt=0,a1,b1,a=0;
    
    int main ()
    {
    	cin>>m;
    	for(int i=0;i<=m;i++)
    		tree[i]=1;
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>a1>>b1;
    		for(int p=a1;p<=b1;p++)
    			{
    				tree[p]=-1;
    			}
    		
    	}
    	for(int i=0;i<=m;i++)
    	{
    		if(tree[i]==1)
    		cnt++;
    	}
    	cout<<cnt;
    	return 0;
    }
    
    
    • 1