题目描述:
牛牛和牛妹新买的房子需要铺上地毯,不过,由于是一个挖掘机户型,有一条很长的走廊,为这条走廊铺上地毯可谓是煞费脑经。
假设这条走廊长为L,用下标1~L代表位置,牛牛总觉得在某个位置铺上一块地毯可以增加颜值,用样的,牛妹觉得在另一些位置铺上地毯也看了一增加颜值,假设两个人一有想法就会付诸行动,那么,在两人停手铺地毯之后,每个位置上各有几块地毯覆盖?
输入状态:
本题为多组测试数据,第一行输入一个正整数 T (1<=T<=1000),代表测试数据组。
对于每组测试数据,输入两个整数L,n(1<=L,n<=1000),分别代表走廊的长度以及牛牛和牛妹一共有多少个铺地毯的想法。
接下去n行,每行两个正整数 l ,r(1 <= l <= r <= L ),代表在闭区间[l,r]上需要铺上一块地毯。
输出描述:
对于每组测试数据,一行输出L个整数,依次代表每个位置上被多少块地毯所覆盖。
例1 输入输出示例仅供调试
输入
1
6 3
1 2
4 5
3 6
输出
1 1 1 2 2 1
C++解答,仅供参考。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<vector>
using namespace std;
int main(){
int T;
while(cin >> T){
vector<int> a(1001),b(1001);
for(int i=1;i<=T;i++){
cin >> a[i] >>b[i];
vector<int> result(a[i]+1,0);
for(int j=1;j<=b[i];j++){
int begin=0,end=0;
cin >> begin >> end;
for(int k=begin;k<=end;k++){
result[k]+=1;
}
}
for(int p=1;p<=a[i];p++){
cout << result[p] << " ";
}
cout << endl;
}
}
return 0;
}
图片:
欢迎关注公众号,干货满满。