교육 Codeforces 라운드 52 (사업부 정격 2.) C : 확인이 평등 (思维)

C. 제조사 그것은 평등

테스트 당 시간 제한

이초

시험 당 메모리 제한

256메가바이트

입력

표준 입력

산출

표준 출력

윈 타워로 구성된 장난감 빌딩이있다. 각 타워는 서로에 서 여러 조각으로 구성되어 있습니다. 이 높이를 갖도록 hihi 2-1 번째 타워 hihicubes 구성된다.

의는 다음과 같은 몇 가지 높이에 HH를 조작 슬라이스를 정의 할 수 있습니다 : 높이가 HH보다 큰 경우 각 타워 II를 들어, 타워의 높이가 HH에 동일하게 일부 최고 큐브를 제거합니다. 하나의 "조각"의 비용은 모두 타워에서 제거 된 큐브의 총 수와 같습니다.

좋은 하나하자 이름 슬라이스는 비용이 낮은 또는 KK (k≥nk≥n)와 동일합니다.

모든 타워는 높이가 동일하게해야 할 좋은 조각의 최소 수를 계산합니다. 물론, 그렇게 그것을 확인하는 것이 가능하다.

입력

각 타워의 수와 분할에 대한 제한, - 첫 번째 라인은 두 정수 NN 및 KK (1≤n≤2⋅1051≤n≤2⋅105, n≤k≤109n≤k≤109)을 포함한다.

두번째 라인 NN 분리 정수 H1 공간 H2 포함 ... hnh1, H2, ..., HN (1≤hi≤2⋅1051≤hi≤2⋅105) - 탑의 초기 높이.

산출

모든 타워가 같은 heigth를 만들기 위해해야 ​​할 좋은 조각의 최소 번호 - 하나 개의 정수를 인쇄합니다.

입력

5 5 
3 1 2 2 4

산출

입력

4 5 
1 2 3 4 5

산출

노트

첫 번째 예에서는 22 개 조각을 만들기 위해 최적입니다. 제 슬라이스 높이 22 (비용은 33이다)에 있고, 두 번째는 높이 (11) (그 비용은 44이다)에있다.

 

질문의 의미 :

N 열이 있으며, i 번째 열의 높이 안녕, 천장 (K)의 비용은 각각의 오퍼레이터는 높이 X를 선택할 수 있으며, 예컨대 하이 최소가된다 (HI, X)

그러나 비용 합계 요구 (HI 분 (HI, X)) <= K;

Q. 모두 같은 몇 가지 X와 같은 하이의 최소 필요합니다.

 

처음에 + - 절반 욕심과 함께하고 싶어하지만,이 장소가 조정 반 너무 어렵다, TLE3을하고있다 ..

불편

그것에 대해 생각하면 완성, 사실, 그렇게 할 수 있습니다.

업데이트 곳에서 욕심만큼 합으로 <k는 아래로 계속됩니다. 알고를 시작합니다.

추가 된 값은 O (1) 쿼리 수, 당신은 유사한 접두사와 아이디어를 사용할 수 있어야합니다. 통계의 수를 각각의 높이 및 누적을 위해.

 

코드 :

#include <bits/stdc++.h>
#include <stdio.h>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,a,n) for(int i=n;i>=a;i--)

typedef long long ll;
const int maxn = 2e5+10;
const int mod =1e9+7;
const int inf = 0x3f3f3f3f;
using namespace std;

ll a[maxn];
ll n,k;
ll cot[maxn];
int main(int argc, char const *argv[])
{

	cin>>n>>k;
	ll ma = -inf,mi = inf;

	rep(i,1,n)
	{
		cin>>a[i];
		cot[a[i]]++;
		ma = max(ma,a[i]);
		mi = min(mi,a[i]);
	}
	for (int i = ma; i>=1; --i)
        cot[i] += cot[i + 1];
	ll ans = 0;
	ll now = 0;
	for(int i = ma; i > mi ;i--)
	{
		if( now + cot[i] > k)
		{
			ans++;
			now = 0;
		}
		now+= cot[i];
	}
    if (now) ans++;
  
	cout<<ans<<endl;
	return 0;

}

 

게시 된 372 개 원래 기사 · 원 찬양 89 ·은 23 + 조회수

추천

출처blog.csdn.net/sizaif/article/details/83022694