菜鸟生成记(44)
P1276 校门外的树(增强版)
#include<iostream>
#include<string.h>
#include<vector>
using namespace std;
const int N=1e4+10;
int main()
{
vector<int> m(N,1);//由于C的数组没法初始化为1;
//我就用了,vector容器,m(N,1):将容器m的N个单位赋值1
//1:代表原来的树
//0: 代表没有数
//2:代表新种的树苗
int l,n;
int k=0,z=0;
cin>>l>>n;//l:长度; n:操作次数
for(int i=0;i<n;i++)
{
int x,a,b;
cin>>x>>a>>b;
if(x==0)//砍树
{
for(int j=a;j<=b;j++)
{
if(m[j]==2)
z++;//统计树苗数
m[j]=0;
}
}
else if(x==1)//种树(注意中的是树苗)
{
for(int j=a;j<=b;j++)
{
if(m[j]==0)//没有树的位置
{
m[j]=2;//新种的树苗
}
}
}
}
/*
经过上面的操作,容器中可能有0,1,2;三种状态
//1:代表原来的树
//0: 代表没有树
//2:代表新种的树苗
*/
for(int i=0;i<=l;i++)
if(m[i]==2)//统计剩下树苗(树苗是原来的树被砍了之后又中的树)
k++;
cout<<k<<endl;//原来的树被砍了,种上树苗,最后还在的树苗
cout<<z;//原来的树被砍了,种上树苗又被砍了(经过1->0->2->0)
return 0;
}