青蛙與蚊子 C 練習題

2021-10-12 07:23:07 字數 1538 閱讀 5934

【問題描述】

有 n 只青蛙位於座標軸 ox 上,對於每只青蛙,有兩個已知值 xi、ti,表示第 i 只青蛙在座標的位置(各不相同)以及它的舌頭的長度。同樣有 m 只蚊子乙隻接乙隻的落到座標軸上,對於每只蚊子,有兩個已知值, pj 表示第 j 只蚊子所在的位置,bj 為第 j 只蚊子的重量。青蛙和蚊子表示為座標上的點。

如果蚊子和青蛙在同一位置或者在右邊,青蛙可以吃掉蚊子,它們之間的距離不超過青蛙舌頭的長度。

如果有幾隻青蛙都能在某一時刻吃到乙隻蚊子,最左邊的青蛙就會吃掉它(最小的 xi)。吃完蚊子後,青蛙的舌頭將增加蚊子重量的長度,在之後,青蛙又能夠吃其他蚊子(在舌頭長度增加之後)。

在所有蚊子落下以及青蛙吃掉所有可能的蚊子之後,對於每個青蛙,輸出兩個值,即吃蚊子的數量以及舌頭的長度。

每只蚊子只有在青蛙吃完之前所有可能的蚊子之後才會落到座標上,蚊子的值是按其落到座標軸上的順序給出的。

【輸入形式】

輸入的第一行為兩個整數(1 ≤ n,m ≤ 2*105),表示青蛙和蚊子的數量。

接下來的 n 行,每行兩個整數 xi、ti(0 ≤ xi、ti ≤ 109),表示第 i 只青蛙所在的位置以及它的舌頭的初始長度,輸入保證所有的 xi 互不相同。

接下來的 m 行,每行兩個整數 pj、bj(0 ≤ pj、bj ≤ 109),表示第 j 只蚊子落下的位置以及它的重量。

【輸出形式】

輸出為 n 行,第 i 行包含另兩個整數值 ci、li,表示被第 i 只青蛙吃掉的蚊子數量以及最終的青蛙的舌頭長度。

【樣例輸入1】

4 610 2

15 0

6 10 1

110 10

1 16 0

15 10

14 100

12 2

【樣例輸出1】

3 114

1 10

1 11 2

【樣例輸入2】

1 210 2

20 2

12 1

【樣例輸出2】

1 3

#include

#include

using namespace std;

struct fog

;struct smo

;fog:

:fog()

smo:

:smo()

bool cmp1

(fog a,fog b)

bool cmp2

(fog a,fog b)

intmain()

for(

int i =

0; i < n; i++

)sort

(f, f + n, cmp1)

; smo *smo = new smo[m]

;for

(int i =

0; i < m;i++)}

}}}sort

(f, f + n, cmp2)

;for

(int i =

0; i < n;i++

)return0;

}

C語言與練習題

題目描述 計算字串最後乙個單詞的長度,單詞以空格隔開。輸入描述 一行字串,非空,長度小於5000。輸出描述 整數n,最後乙個單詞的長度。示例1 輸入 hello world 輸出 5 include intmain else printf d length return0 題目描述 寫出乙個程式,接...

C 指標練習題

1.耶穌有13個門徒,其中有乙個就是出賣耶穌的叛徒,請用排除法找出這位叛徒 13人圍坐一圈,從第乙個開始報號 1,2,3,1,2,3 凡是報到 3 就退出圈子,最後留在圈內的人就是出賣耶穌的叛徒,請找出它原來的序號 使用迴圈鍊錶實現要求 lzy 2011 8 1 include include us...

練習題c (一)

1.計算字串最後乙個單詞的長度,單詞以空格隔開。include include using namespace std int main 2.計算最少出列多少位同學,使得剩下的同學排成合唱隊形 說明 n位同學站成一排,老師要請其中的 n k 位同學出列,使得剩下的k位同學排成合唱隊形。合唱隊形是指這...