【正经题解】校门外的树
2024-02-20 17:55:21
发布于:浙江
3阅读
0回复
0点赞
思路:
第一遍,将路上的所有树打上标记,表示这个点没有被访问过。
第二遍,读入区间的头和尾,从这个区间的头开始循环,到尾结束,标记为访问过。
第三遍,顺序访问路上的树,只要没访问过,计数加1,这样就求出了路上所有还存在的树的数目。
#include<cstdio>
#include<iostream>
using namespace std;
#include<cstring>
int L,M;
//变量名称与原题相同
int cnt=0;
//剩余树的数目
int vis[10000+10];
//用来判断树木有没有被访问过
int main()
{
memset(vis,0,sizeof(vis));//初始化该数组
cin>>L>>M;//标准输入,不解释
for(int i=0;i<=L;i++)
vis[i]=0;//从0这个树开始,将这条路上所有的树标记为未访问过
for(int i=1;i<=M;i++)
{
int head,tail;//定义区间的头和尾
cin>>head>>tail;
for(int j=head;j<=tail;j++)
if(vis[j]==0)
vis[j]=1;//从这个区间的头和尾开始,将所有区间内的树标记为访问过
}
for(int i=0;i<=L;i++)
{
if(vis[i]==0)
cnt++;//计算未被访问过的树的数目
}
cout<<cnt<<endl;
return 0;
}
这里空空如也
有帮助,赞一个