程式設計練習(小s的第x個蘋果)

2021-09-18 06:10:09 字數 802 閱讀 5400

題目:有從左到右的n堆蘋果。小s知道每堆蘋果的個數,那麼請問第x個蘋果是從左往右數第幾堆中的呢?

要求:輸入

第一行: n(代表有n堆蘋果,n>=1)

第二行: a1,a2。。。。an。(ai代表第i堆裡有ai個蘋果)

第三行: m(詢問m次)

第四行: q1,q2。。。。qm。(qi表示第i次詢問第qi個蘋果在第幾堆)

思路:建立乙個vector sum,sum[i]的表示前i堆蘋果的總數,將q與sum[i]比較。

一開始是用遍歷的方法比較q與sum[i](i從0到n),只能通過30%的測試,計算量太大。

後來使用二分查詢法比較q與sum,通過了所有測試。

通過測試的**:

#include#includeusing namespace std;

int main()

cin >> m;

getchar();

while (cin >> tmp)

for (unsigned int i = 0; i < m; i++)

unsigned int low = 0;

unsigned int high = a.size()-1;

unsigned int mid = (low + high) / 2;

while (!(q[i]a[mid - 1]))

else if(q[i]>a[mid])

else if(q[i]}

cout << mid << endl;

} return 0;

}

程式設計練習(上課睡覺的小s)

題目 小s上課的時候容易犯睏,但又想聽一些自己感興趣的內容,我們將知道小s對每分鐘的內容的感興趣程度,以數字量化。以及每分鐘小s醒著還是在睡覺,我們可以叫醒小s一次,小s醒後k分鐘內不會睡著,要最大化小s聽到感興趣的內容。要求 輸入 第一行 課堂持續時間n,小s堅持的時間k。1 n,k 10 4 第...

ZJUT1647 小X的蘋果 優先佇列

一道優先佇列的題目。之前看了不懂得做,因為沒學過。昨天看了堆排序以及用堆構建優先佇列,所以今天試了下。兩次ce 鬱悶 兩次wa 一次不行,因為要趕快上課,所以匆匆又改了一下,還是不行 然後下課回來,檢查了一下,修改了一點,然後提交,然後ac。之前看的時候不知道應該怎樣利用優先佇列,不過看了一會很快就...

程式設計練習 求無序陣列第k小的數

為同寢的傢伙寫了乙個求乙個無序陣列中第k小數的程式。思想就是快排的思想。找乙個點,然後放到末尾,然後將小於這個數的值放在陣列前面,大於這個值的放在陣列後面,然後在將這個末尾的數放回。這個末尾數放入的位置i代表已經找到第i小的數。下面你應該明白了吧,放入的位置如果是k,恭喜你找到了第k小的數。同樣找到...