种树 源程序名 trees.???(pas, c, cpp) 可执行文件名 trees.exe 输入文件名 trees.in 输出文件名 trees.out 【问题描述】 一条街的一边有几座房子。因为环保原因居民想要在路边种些树。路边的地区被分割成块,并被编号成1..N。每个部分为一个单位尺寸大小并最多可种一棵树。每个居民想在门前种些树并指定了三个号码B,E,T。这三个数表示该居民想在B和E之间最少种T棵树。当然,B≤E,居民必须记住在指定区不能种多于区域地块数的树,所以T≤E-B+l。居民们想种树的各自区域可以交叉。你的任务是求出能满足所有要求的最少的树的数量。 写一个程序完成以下工作: * 从trees.in读入数据
* 计算最少要种树的数量和位置 * 把结果写到trees.out 【输入】
第一行包含数据N,区域的个数(0 下面的H行描述居民们的需要:B E T,0 输出文件第一行写有树的数目,下面的行包括所有树的位置,相邻两数之间用一个空格隔开。 【样例】 trees.in trees.out 9 5 4 1 4 5 8 9 1 4 2 4 6 2 8 9 2 3 5 2 Type point=record b,e,t:integer; end; Var tree:array[1..30000]of boolean; a:array[1..5000]of point; tmp:point; h,n,i,j,k,min:integer; Begin readln(n); readln(h); for i:=1 to h do readln(a[i].b,a[i].e,a[i].t); for i:=1 to h-1 do for j:=i+1 to h do if a[i].e>a[j].e then begin tmp:=a[i];a[i]:=a[j];a[j]:=tmp;end; fillchar(tree,sizeof(tree),false); for i:=1 to h do begin

