csp試題2 買菜

2021-09-27 10:14:18 字數 1823 閱讀 7215

問題描述

小h和小w來到了一條街上,兩人分開買菜,他們買菜的過程可以描述為,去店裡買一些菜然後去旁邊的乙個廣場把菜裝上車,兩人都要買n種菜,所以也都要裝n次車。具體的,對於小h來說有n個不相交的時間段[a1,b1],[a2,b2]…[an,bn]在裝車,對於小w來說有n個不相交的時間段[c1,d1],[c2,d2]…[cn,dn]在裝車。其中,乙個時間段[s, t]表示的是從時刻s到時刻t這段時間,時長為t-s。

由於他們是好朋友,他們都在廣場上裝車的時候會聊天,他們想知道他們可以聊多長時間。

輸入格式

輸入的第一行包含乙個正整數n,表示時間段的數量。

接下來n行每行兩個數ai,bi,描述小h的各個裝車的時間段。

接下來n行每行兩個數ci,di,描述小w的各個裝車的時間段。

輸出格式

輸出一行,乙個正整數,表示兩人可以聊多長時間。

樣例

輸入:

4

1 35 6

9 13

14 15

2 45 7

10 11

13 14

輸出:

3
資料規模與約定

對於所有的評測用例,1 ≤ n ≤ 2000, ai < bi < ai+1,ci < di < ci+1,對於所有的i(1 ≤ i ≤ n)有,1 ≤ ai, bi, ci, di ≤ 1000000。

使用了一種很簡單的方法來解題。

首先初始化h和w兩人買菜從頭到尾的時間,如果某一時間內處於裝菜過程,則此時為他們的聊天時間。

從他們兩人最早的開始時間到最晚的結束時間,判斷兩人在同一時間內是否都處於裝菜狀態,如果是,則他們的聊天時間加1。

結束後,輸出聊天時間。

使用以上方法解題,最需要注意的是記憶體是否會溢位:題目規定了1 ≤ ai, bi, ci, di ≤ 1000000,即時間從1到1000000,我們需要為兩個人申請1000000塊位址空間,因為這些空間內不需要儲存整數,只是記錄乙個是否處於裝菜狀態的標記,所以空間型別申請為bool,c++中佔1bytes,然後2 x 1bytes x 1000000 <2gb = 2 x 1024 x 1024 x 1bytes,額。。。還是占用了2g的空間,但定義在全域性區應該問題不大。

/*

20190927

csp試題2:買菜

*/#include

using

namespace std;

bool h_time[

1000001];

bool w_time[

1000001];

int h_len =0;

int w_len =0;

intmain()

h_len = end;

}for

(int i=

0; i) w_len = end;

}//處理資料

int len = h_len;

if(len < w_len)

int num =0;

for(

int i=

0; i//輸出

cout

}

顯然這次在解題時就像偷懶了一樣,但同樣暴露出了一些問題,我之前一直以為bool型別只佔1bit,但在網上一查發現並沒有那麼簡單,它佔了1byte。為什麼要佔1byte呢?下面這篇文章我感覺寫的很好:為什麼c語言中bool型變數占用乙個位元組學過計算機組成與設計的同學應該可以看懂。

csp試題2 遊戲

有n個小朋友圍成一圈玩遊戲,小朋友從1至n編號,2號小朋友坐在1號小朋友的順時針方向,3號小朋友坐在2號小朋友的順時針方向,1號小朋友坐在n號小朋友的順時針方向。遊戲開始,從1號小朋友開始順時針報數,接下來每個小朋友的報數是上乙個小朋友報的數加1。若乙個小朋友報的數為k的倍數或其末位數 即數的個位 ...

CSP 2023年9月第2題 買菜

這題的重點 就是要清楚地分析 兩個時間段之間的對應關係 要清晰的分析出 相交 包含 相離的情況 需要我們在紙上畫圖,這樣比較好分析 其次 要建立結構體陣列 從而來存放讀入的資料 還有就是 結果感覺 大概是10 9 的樣子,因此 把設定為 long long 型別 下面是 原始碼 include us...

csp試題2 小明放學

題目背景 漢東省政法大學附屬中學所在的光明區最近實施了名為 智慧型光明 的智慧型城市專案。具體到交通領域,通過 智慧型光明 終端,可以看到光明區所有紅綠燈此時此刻的狀態。小明的學校也安裝了 智慧型光明 終端,小明想利用這個終端給出的資訊,估算自己放學回到家的時間。問題描述 一次放學的時候,小明已經規...