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