Problem - 1622C - Codeforces
創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。10余年品質(zhì),值得信賴!給你一個(gè)整數(shù)數(shù)組a1,a2,...,an和整數(shù)k。
在一個(gè)步驟中,你可以
選擇某個(gè)索引i并將ai減少1(使ai=ai-1)。
或者選擇兩個(gè)索引i和j,將ai等于aj(使ai=aj)。
為了使數(shù)組∑i=1nai≤k的總和,你需要的最小步驟數(shù)是什么?(你可以使數(shù)組的值為負(fù)數(shù))。
輸入
第一行包含一個(gè)整數(shù)t(1≤t≤104)--測(cè)試案例的數(shù)量。
每個(gè)測(cè)試用例的第一行包含兩個(gè)整數(shù)n和k (1≤n≤2?105; 1≤k≤1015) - 數(shù)組a的大小和其總和的上限。
每個(gè)測(cè)試案例的第二行包含n個(gè)整數(shù)a1,a2,...,an(1≤ai≤109)--數(shù)組本身。
保證所有測(cè)試用例的n之和不超過2?105。
輸出
對(duì)于每個(gè)測(cè)試案例,打印一個(gè)整數(shù)--使∑i=1nai≤k的最小步驟數(shù)。
例子
inputCopy
4
1 10
20
2 69
6 9
7 8
1 2 1 3 1 2 1
10 1
1 2 3 1 2 6 1 6 8 10
輸出拷貝
10
0
2
7
注意
在第一個(gè)測(cè)試案例中,你應(yīng)該將a1減少10倍以得到低于或等于k=10的和。
在第二個(gè)測(cè)試案例中,數(shù)組a的總和已經(jīng)小于或等于69,所以你不需要改變它。
在第三個(gè)測(cè)試案例中,你可以,例如。
設(shè)置a4=a3=1。
將a4減少1,得到a4=0。
結(jié)果,你會(huì)得到數(shù)組[1,2,1,0,1,2,1],在1+1=2步中,總和小于或等于8。
在第四個(gè)測(cè)試案例中,你可以,例如。
選擇a7并減少3次;你會(huì)得到a7=-2。
選擇4個(gè)元素a6、a8、a9和a10,它們等于a7=-2。
結(jié)果,你會(huì)得到數(shù)組[1,2,3,1,2,-2,-2,-2,-2,-2],在3+4=7步中,總和小于或等于1。
題解:
首先我們要明白要想操作數(shù)最小我們應(yīng)該怎么做
1.讓最小的-1
2.讓大的幾個(gè)數(shù)等于最小的
很明顯我們應(yīng)該進(jìn)行操作1,減到一定數(shù)值后再進(jìn)行操作二最優(yōu)
關(guān)鍵是我們?nèi)绾未_定要進(jìn)行多少次操作1呢?
我們發(fā)現(xiàn)進(jìn)行操作2次數(shù)頂多n - 1次
那么我們就二分總次數(shù)
遍歷0~min(n-1,mid)
一部分進(jìn)行操作1,一部分進(jìn)行操作2即可
#include#include
#include#include#include
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧