(郊遊活動)有 n 名同學參加學校組織的郊遊活動,已知學校給這 n 名同學的郊遊總經費為 a 元,與此同時第 i 位同學自己攜帶了 mi 元。為了方便郊遊,活動地點提供 b(≥n)輛自行車供人租用,租用第 j 輛自行車的**為 cj元,每位同學可以使用自己攜帶的錢或者學校的郊遊經費,為了方便賬務管理,每位同學只能為自己租用自行車,且不會借錢給他人,他們想知道最多有多少位同學能夠租用到自行車。(第
四、五空 2.5 分,其餘 3 分)
本題採用二分法。對於區間[l, r],我們取中間點 mid 並判斷租用到自行車的人數能否達到 mid。判斷的過程是利用貪心演算法實現的。
#include
using
namespace std;
#define maxn 1000000
int n, b, a, m[maxn]
, c[maxn]
, l, r, ans, mid;
bool
check
(int nn)
return3;
}void
sort
(int a,
int l,
int r)}if
(i < r)
sort
(a, i, r);if
(l < j)
sort
(a, l, j);}
intmain()
else
r =5;
} cout << ans << endl;
return0;
}
1.空①,bool check(int nn)函式檢查帶錢最多的nn個同學,能不能在總經費為a的情況下,租到自行車。m陣列已安裝從小到大排序,變數i從第n-nn+1個同學開始,判斷後nn個同學是否滿足要求。
// 檢查x是否滿足某種性質
// 區間[l, r]被劃分成[l, mid]和[mid + 1, r]時使用:
// 檢查x是否滿足某種性質
// 區間[l, r]被劃分成[l, mid - 1]和[mid, r]時使用:
intbsearch
(int l,
int r)
return l;
}
NOIP 2016 普及組 海港
題目鏈結 小k是乙個海港的海關工作人員,每天都有許多船隻到達海港,船上通常有很多來自不同國家的乘客。小k對這些到達海港的船隻非常感興趣,他按照時間記錄下了到達海港的每一艘船隻情況 對於第i艘到達的船,他記錄了這艘船到達的時間ti 單位 秒 船上的乘客數ki,以及每名乘客的國籍 xi,1,xi,2,x...
小結 初賽NOIP2016提高組
92分拿下初賽!這總不能掛了吧 這次總體難度不算太高,因此還不錯,恩。發車!心裡還有些小激動才怪 呢!一路沒有睡覺的打算,只顧腐敗。人員分布分二級階梯 被分作了打殺黨和聊天黨。後面一堆人忙著複習三國歷史,而前面則沉浸於互相調侃之中無法自拔。作為一名合格的司機,怎麼能浪費這大好的開車時光呢?一路 不久...
noip2016普及組複賽總結
9點半從紀中出發,大概11點多來到廣州六中。在六中旁邊一家小餐館吃了中餐,那餐廳真心很貴,一盆飯就要20元,我們那桌吃了四 盆.xc 不想買單啦 啦啦啦 然後就來到六中的某個功能室百無聊賴的休息了一會兒,兩點鐘進考場。兩點半 比賽開始,還是先看題.一二兩題太水了,直接開碼,1小時搞定兩題 三點半 仔...