残りの木(清華大学再試験)

序文:

21.再テストに参加できるかどうかに関係なく、道路に書かれたゴミコードを記録します。もともと「AlgorithmNotes」をかじったのですが、やりすぎたので、Kingway ComputerTestGuideに変更しました。

タイトル説明:

長さL(1 <= L <= 10000)の道路があり、これはナンバーライン上の長さLのラインセグメントとして想像できます。開始点は座標の原点です。各整数座標点、つまり0,1にツリーがあります。 、2、...、LのL +1位置にL + 1ツリーがあります。次に、いくつかのツリーを削除する必要があります。削除されたツリーの間隔は、数字のペアで表されます。たとえば、100 200は、100から200(エンドポイントを含む)までのすべてのツリーを削除することを意味します。M(1 <= M <= 100)の間隔があり、間隔の間に重複がある場合があります。ここで、間隔内のすべてのツリーを削除した後に残っているツリーの数を削除する必要があります。

説明を入力してください

2つの整数L(1 <= L <= 10000)およびM(1 <= M <= 100)。
次に、整数のMグループがあり、各グループには1対の数値があります。

出力の説明:

入力データのセットが複数ある場合があります。入力データのセットごとに、間隔内のすべてのツリーを削除した後に残っているツリーの数を表す数値が出力されます。

回答:

#include<stdio.h>
#define max 10001
int main()
{
    
    
	int l, m,left,right,count=0;
	char tree[max] ;
	for (int i = 0; i < max; i++)
		tree[i] = '1';
	while (scanf("%d%d", &l, &m) != EOF) {
    
    
		while (m--) {
    
    
			scanf("%d%d", &left, &right);
			for (int i = left; i <= right; i++)
				tree[i] = '0';
		}
		for (int i = 0; i <=l; i++)
			if (tree[i] == '1')
				count++;
		printf("%d\n", count);
		for (int i = 0; i < max; i++)
			tree[i] = '1';
		count = 0;
	}
	return 0;
}

おすすめ

転載: blog.csdn.net/weixin_44897291/article/details/112676098