真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C.SetorDecrease(二分+有兩個(gè)不確定情況如何二分)-創(chuàng)新互聯(lián)

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#include#includeusing namespace std;
#define int long long
int a[200050];
int b[200050];
int n,k;
int check(int x)
{
	for(int i = 0;i<= min (x,n-1);i++)//進(jìn)行操作2的次數(shù)
	{
		int mi = a[n] - (x-i);//(x-i)為進(jìn)行操作1的次數(shù)
		int s = b[n-1] - b[i] + (i+1)*(mi);//i+1是前面i個(gè)數(shù),是根據(jù)第n個(gè)數(shù)變化的
		if(s<= k)
		return 1; 
	}
	return 0;
}
void solve()
{
	cin >>n >>k;
	int s = 0;
	for(int i = 1;i<= n;i++)
	{
		cin >>a[i];
		s += a[i];
	}
	sort(a+1,a+1+n,greater());
	for(int i = 1;i<= n;i++)
	b[i] = b[i-1] + a[i];
	if(s<= k)
	{
		cout<<"0\n";
		return ;
	}
	int l = 0,r = s - k;
	while(l<= r)
	{
		int mid = (l + r)/2;
		if(check(mid))
		{
			r = mid - 1;
		}
		else
		{
			l = mid + 1;
		}
	}
	cout<< l<<"\n";
}
signed main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);
	int t = 1;
	cin >>t;
	while(t--)
	{
		solve();
	}
}

//1 10 11

//001
//010
//011
//100

你是否還在尋找穩(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)查看詳情吧


當(dāng)前文章:C.SetorDecrease(二分+有兩個(gè)不確定情況如何二分)-創(chuàng)新互聯(lián)
地址分享:http://weahome.cn/article/djjdgd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部