題目解析 樂樂的工作

2021-10-07 19:13:08 字數 1283 閱讀 3229

時間限制: 1000 ms 空間限制: 262144 kb

題目描述

樂樂非常喜歡現在這份工作,因為公司只要求員工把每天的工作完成,不要求固定的上班時間。假如樂樂的同事有的從300時刻(以秒為單位),一直工作到3000時刻(我們認為從300時刻工作到3000時刻所工作的時間為3000-300=2700秒,即結束的那個時刻是沒有工作的);有的從700時刻開始,在5200時刻結束;有的從6500時刻開始,到8100時刻結束。那麼期間最長的至少有乙個人在工作的連續時間是4900秒(從300時刻到5200時刻),而最長的無人工作的連續時間為1300時刻(從5200時刻到6500時刻)。

現在樂樂想知道從最早有人開始工作的時間至最後乙個人離開的時間裡,公司裡最長至少有一人在工作的時間段和最長的無人工作的時間段。

輸入第一行乙個整數n(1<=n<=5000);

接著有n行,每行有兩個用空格分開的正整數ai和bi(0<=ai輸出

一行,兩個整數,即題目所要求的兩個答案。

樣例輸入

樣例13

300 3000

700 5200

6500 8100

樣例22

10 20

21 30

樣例輸出

樣例14900 1300

樣例210 1

【思路】

用bool陣列表示在該時間內,是否有農民擠牛奶,有則=true,否則=false;

注意區間的表示!我用的是左閉右開區間,輸入的start認為在該時間點為true,end為false

然後就是求最大連續的true和false了

求最大連續的true和false的列舉起點和終點

輸入時把start和end的最小值和最大值存起來

【**】

#include

using

namespace std;

int n,x,y,a[

1000001

],maxtim,now,tot,max1,max0;

intmain()

int i=0;

while

(!a[i]

) i++

; now=a[i]

;i++

;for

(;i<=maxtim;i++

)else max0=

max(max0,tot)

,tot=

0,now+

=a[i];}

}printf

("%d %d\n"

,max1,max0)

;}

昨天的題目解析

no.1 linux系統中,使用者檔案描述符0表示 a.標準輸入裝置檔案描述符 b.標準輸出裝置檔案描述符 c.管道檔案描述符 d.標準錯誤輸出裝置描述符 答案 a 檔案描述符0 標準輸入裝置 檔案描述符1 標準輸出裝置 檔案描述符2 標準錯誤輸出裝置 no.2 設x和y是二叉樹中的任意兩個節點,若...

leetCode題目解析

給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原...

CourseGrading 題目解析

問題描述 若某元素在一組數中比它大元素越多,則說明這個數在這組數的值就越小。現請你統計出陣列中的每個元素,數一數該陣列有多少個元素比它大。輸入形式 第一行 n 第二行 n個整數 輸出形式 n個整數,各數這之間有1個空格 樣例輸入 5 4 6 12 16 8 樣例輸出 4 3 1 0 2個人答案 in...