1. 程式人生 > >演算法訓練 校門外的樹

演算法訓練 校門外的樹

問題描述  某校大門外長度為L的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1米。我們可以把馬路看成一個數軸,馬路的一端在數軸0的位置,另一端在L的位置;數 軸上的每個整數點,即0,1,2,……,L,都種有一棵樹。  由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已 知任一區域的起始點和終止點的座標都是整數,區域之間可能有重合的部分。現在要把這些區域中的樹(包括區域端點處的兩棵樹)移走。你的任務是計算將這些樹 都移走後,馬路上還有多少棵樹。輸入格式  輸入檔案的第一行有兩個整數L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表馬路的長度,M代表區域的數目,L和M之間用一個空格隔開。接下來的M行每行包含兩個不同的整數,用一個空格隔開,表示一個區域的起始點 和終止點的座標。
輸出格式  輸出檔案包括一行,這一行只包含一個整數,表示馬路上剩餘的樹的數目。樣例輸入500 3150 300100 200470 471樣例輸出298資料規模和約定  對於20%的資料,區域之間沒有重合的部分;  對於其它的資料,區域之間有重合的情況。思路:方法1:通過數學運算,一段區域多少棵,重複的就去掉1米——2棵2米——3棵主要是確定一段區域裡頭有多少棵樹,用總數減去移走的,而移走的樹中會用重複的。方法2:模擬simulation,開一段陣列,全都設定為1,當給定一個區域後遍歷它們後,都設為0 ! ! !    
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<cmath>
#include<queue>
#include<stack>
using namespace std;
int Sum = 0;
int Array[11000];
int main() {
	int L, M;//輸入L總長度,M區塊的數量
		cin >> L >> M;
		memset(Array, -1, sizeof(Array));//全都設定為-1;
	int f, t;
		while (M--) {
			cin >> f >> t;
			for (int i = f; i <=t;i++) {
				Array[i] = 0;
			}
		}
		for (int i = 0; i <=L;i++) {//多個等號
			if (Array[i]!=0) {
				Sum++;
			}
		}
		cout << Sum << endl;
	return 0;
}


相關推薦

演算法訓練 FBI

  演算法訓練 FBI樹   時間限制:1.0s   記憶體限制:256.0MB        問題描述   我們可以把由“0”和“1”組成的字串分為三類:全“0”串稱為B串,全“1”串稱為

2018北大暑acm演算法訓練課程 Tian Ji -- The Horse Racing 貪心

總時間限制: 5000ms 記憶體限制: 65536kB 描述 Here is a famous story in Chinese history. That was about 2300 years ago. General Tian Ji was a

演算法訓練 校門外的

問題描述  某校大門外長度為L的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1米。我們可以把馬路看成一個數軸,馬路的一端在數軸0的位置,另一端在L的位置;數 軸上的每個整數點,即0,1,2,……,L,都

ALGO-29 演算法訓練 校門外的

 ALGO-29  校門外的樹(區間處理) 問題描述 某校大門外長度為L的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1米。我們可以把馬路看成一個數軸,馬路的一端在數軸0的位置,另一端在L的位置;數軸上的每個整數點,即0,1,2,……,L,都種有一棵樹。 由於馬路上有一

藍橋杯 演算法訓練 校門外的(線段+懶惰標記)

演算法訓練 校門外的樹   時間限制:1.0s   記憶體限制:256.0MB 問題描述   某校大門外長度為L的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1米。我們可以把馬路看成

10.25算法訓練——裸線段

clas code 區間求和 每次 進行 結點 連續 答案 最大值和最小值 題目大意:對N(1<=N<=50000)個數進行連續進行M(1<=M<=200000)次詢問:問1-N之間任意連續區間最大值和最小值之差。 之前學過線段樹,學的是模版題,求解

機器學習演算法--CART分類迴歸

許多問題都是非線性的,用線性模型並不能很好的擬合數據,這種情況下可以使用樹迴歸來擬合數據。介紹CART,  樹剪枝,模型樹。 1.CART 傳統決策樹是一種貪心演算法,在給定時間內做出最佳選擇,不關心是否達到全域性最優。切分過於迅速,特徵一旦使用後面將不再使用。不能處理連續型特徵,

【資料結構週週練】013 利用棧和非遞迴演算法求二叉的高

一、前言 二叉樹的高是樹比較重要的一個概念,指的是樹中結點的最大層數本次演算法通過非遞迴演算法來求得樹的高度,借用棧來實現樹中結點的儲存。 學英語真的很重要,所以文中的註釋還有輸出以後會盡量用英語寫,文中出現的英語語法或者單詞使用錯誤,還希望各位英語大神能不吝賜教。 二、題目 將

【資料結構週週練】012 利用佇列和非遞迴演算法實現二叉的層次遍歷

一、前言 二叉樹的遍歷是比較多樣化的遍歷,有很多種遍歷方式,先序遍歷,中序遍歷,後序遍歷,層次遍歷等等。本次給大家講的是層次遍歷,為了方便,我將題目中的資料改為編號,從左往右,從上往下依次遍歷。方便大家看到結果。 二、題目 將下圖用二叉樹存入,並通過層次遍歷方式,自上而下,從左往右對

密碼傳紙條演算法訓練 -- python 實現

今天幫朋友解了一個很有意思的問題 -- 傳紙條,(要求用python實現)題目如下: 李雷和韓梅梅坐前後排,上課想說話怕被老師發現,所以改為傳小紙條。為了不被老師發現他們紙條上說的是啥,他們約定了如下方法傳遞資訊: 將26個英文字母(全為大寫),外加空格,一共27個字元分成3組,每組9個。也就是

Faster RCNN演算法訓練程式碼解析(2)

接著上篇的部落格,我們獲取imdb和roidb的資料後,就可以搭建網路進行訓練了。 我們回到trian_rpn()函式裡面,此時執行完了roidb, imdb = get_roidb(imdb_name),取得了imdb和roidb資料。 先進入第一階段的訓練:   print

Faster RCNN演算法訓練程式碼解析(3)

四個層的forward函式分析: RoIDataLayer:讀資料,隨機打亂等 AnchorTargetLayer:輸出所有anchors(這裡分析這個) ProposalLayer:用產生的anchors平移整圖,裁剪出界、移除低於閾值的的anchors,排序後使用nms,返回頂部排名的anchors

演算法】二叉前序、中序、後序遍歷相互求法(轉)

二叉樹前序、中序、後序遍歷相互求法 原文地址      今天來總結下二叉樹前序、中序、後序遍歷相互求法,即如果知道兩個的遍歷,如何求第三種遍歷方法,比較笨的方法是畫出來二叉樹,然後根據各種遍歷不同的特性來求,也可以程式設計求出,下面我們分別說明。  

演算法】二叉的遞迴和非遞迴遍歷(轉)

原文地址 【寫在前面】   二叉樹是一種非常重要的資料結構,很多其它資料結構都是基於二叉樹的基礎演變而來的。對於二叉樹,有前序、中序以及後序三種遍歷方法。因為樹的定義本身就 是遞迴定義,因此採用遞迴的方法去實現樹的三種遍歷不僅容易理解而且程式碼很簡潔。而對於樹的遍歷若採用非遞迴的方法,就要採

演算法模板(七) 線段

線段樹單點操作 #include<bits/stdc++.h> using namespace std; int a[maxn],sumv[maxn*4]; void pushup(int id){ sumv[id]=sumv[id<<1]+sumv[id<<1

演算法】二叉的廣度遍歷

廣度優先遍歷的核心思想如下:從根節點開始遍歷,然後遍歷其子節點,再從左至右的,依次遍歷其孫子節點的,以此類推,直到完成整顆二叉樹的遍歷。          50    20        &nbs

演算法總結-二叉的深度優先搜尋

1 遍歷的問題 二叉樹的前序遍歷 http://www.lintcode.com/zh-cn/problem/binary-tree-preorder-traversal/ 二叉樹的中序遍歷 http://www.lintcode.com/zh-cn/problem/b

演算法訓練--數字盒子

/*題目:對於一個盒子S,要求進行插入以及刪除操作,輸出是否操作成功 數字的範圍:10^5(60%)~10^18 */#include <bits/stdc++.h>using namespace std;//Mod:雜湊函式的模數//table:雜湊表 const int Mod = 10000

一天一個小演算法(02.二叉的層序遍歷)

import java.util.LinkedList; import com.alibaba.fastjson.JSONObject; public class BinaryNode {          private Ob