小科的學校門口有一條筆直的馬路,可以把馬路看做是乙個長度為l的直線,馬路上有很多用來種樹的樹坑,編號依次為0到l,每一編號的位置上都有1棵楊樹,春天楊絮滿天飛,非常不利於健康,所以學校要把門口的楊樹都換掉,工作人員中有的人負責砍樹有的人負責種樹。砍樹用「0 a b表示」,意思是砍樹者每次從編號a到編號b處(包含a和b)連續砍掉每一棵樹,就連樹苗也不放過;種樹用「1 c d」表示,意思是種樹者每次從編號c到編號d(包含c和d)中凡是空穴(樹被砍且還沒種上樹苗或樹苗又被砍掉)的地方都補種上樹苗;由於工作人員比較多,有的人種樹有的人砍樹,難免會出差錯,有一些砍樹者一不小心就把剛剛種上的樹苗又砍掉了。
小科是個好奇的小朋友,他想知道最終校門外留下的樹苗有多少棵?植樹者種上又被砍掉的樹苗有多少棵?請你幫忙計算一下吧。
輸入格式
一共n+1行:
第一行,兩個整數l和n,表示校門外原來有l+1棵樹,並有n次砍樹或種樹的操作。
以下n行,每行3個整數c b e,用來描述一次砍樹或植樹操作
如果c為1表示從編號b到編號e所有空穴的地方都種上樹苗
如果c為0表示從編號b到編號e連續砍掉每乙個棵樹 (包含樹苗)
輸出格式
共兩行:
第一行乙個整數,表示馬路上最終留下的樹苗的數目
第二行乙個整數,表示在砍樹和植樹過程中種上又被砍掉的樹苗的數目
輸入輸出樣列
輸入樣例1:
10 3
0 2 6
1 1 8
0 5 7
輸出樣例1:32
#include
using
namespace std;
const
int l=
10010
;int tree[l]
;int
main()
int f,left,right;
for(
int i=
1;i<=n;i++)}
}for
(int i=
0;i<=l;i++
) cout
}
完成(^-^)v 砍樹最小花費
題意 有n種樹,每種樹給出高度h,砍掉每顆樹的花費c,每種樹的數量p,現在要砍掉一些樹,使得最高的樹的數量超過所有樹的一半,問最小花費。不同種類的樹高度可能相同 題解 列舉不同的高度,把高於它的樹都砍掉,然後比它矮的樹挑便宜的砍,使得該高度的樹佔所有樹的1 2 1。給樹按高度排序,首先可以用字尾和預...
二分答案 砍樹
題目傳送門 題目描述 伐木工人公尺爾科需要砍倒m公尺長的木材。這是乙個對公尺爾科來說很容易的工作,因為他有乙個漂亮的新伐木機,可以像野火一樣砍倒森林。不過,公尺爾科只被允許砍倒單行樹木。公尺爾科的伐木機工作過程如下 公尺爾科設定乙個高度引數h 公尺 伐木機公升起乙個巨大的鋸片到高度h,並鋸掉所有的樹...
LG 砍樹 二分
伐木工人公尺爾科需要砍倒m公尺長的木材。這是乙個對公尺爾科來說很容易的工作,因為他有乙個漂亮的新伐木機,可以像野火一樣砍倒森林。不過,公尺爾科只被允許砍倒單行樹木。公尺爾科的伐木機工作過程如下 公尺爾科設定乙個高度引數h 公尺 伐木機公升起乙個巨大的鋸片到高度h,並鋸掉所有的樹比h高的部分 當然,樹...