来看看这题的样例:数据10 3,树有10+1=11棵。第二行数据0 2 6,此时数组tree中均为1,ans1减掉(6-2+1)棵树,剩余6棵。此时没有种树的人种的树被砍掉,因此ans2为0。第三行数据1 1 8,在2~6范围中种树,因此打标记2。由于有树的数量增加,因此ans1增加(6-2+1)棵树,为11棵。第三行数据0 5 7,5至7范围内标记为2,ans2增加(6-5+1)棵,为2,ans1减少(7-5+1)棵,剩余8棵,输出

8
2

再让我们看看这题样例输出:

3
2

???


#include<bits/stdc++.h>
using namespace std;
int tree[10005],l,n;
int a1,a2,a3;
int ans1,ans2;
int main(){
	ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>l>>n;
    ans1=l+1;
    for(int i=1;i<=l+1;i++){
    	tree[i]=1;
	}
	for(int i=1;i<=n;i++){
		cin>>a1>>a2>>a3;
		if(a1==0){
			for(int i=a2;i<=a3;i++){
				if(tree[i]!=0){
					if(tree[i]==2){
						ans2++;
					}
					tree[i]=0;
					ans1--;
				}
			}
		}
		if(a1==1){
			for(int i=a2;i<=a3;i++){
				if(tree[i]!=1){
					tree[i]=2;
					ans1++;
				}
			}
		}
	}
	cout<<ans1<<"\n"<<ans2;
	return 0;
}

8 条评论

  • 1

信息

ID
275
时间
1000ms
内存
256MiB
难度
2
标签
递交数
143
已通过
53
上传者