bzoj 3969: [WF 2013] Low Power 2 점
9303 단어 ZOJ
Time Limit: 20 Sec Memory Limit: 256 MB
제목 연결
http://www.lydsy.com/JudgeOnline/problem.php?id=3969
Description
n 개의 기계 가 있 고 기계 마다 2 개의 칩 이 있 으 며 칩 마다 k 개의 배 터 리 를 넣 을 수 있다.
모든 칩 에 너 지 는 k 개의 배터리 에너지 의 최소 값 이다.
두 칩 의 에너지 차이 가 작 을 수록 이 기 계 는 일 을 잘 한다.
현재 2nk 개의 배터리 가 있 습 니 다. 그들의 에 너 지 를 알 고 있 습 니 다. 우 리 는 그것들 을 n 개의 기계 칩 에 놓 아야 합 니 다.
모든 기계 의 에너지 차 의 최대 치 를 최소 화하 다.
Input
첫 번 째 줄, 두 개의 정수, n 과 k.
두 번 째 줄, 2nk 의 정 수 는 모든 배터리 의 에 너 지 를 나타 낸다.
Output
한 줄 한 줄 의 정 수 는 모든 기계 의 에너지 차이 의 최대 치가 가장 적은 지 를 나타 낸다.
Sample Input
2 3 1 2 3 4 5 6 7 8 9 10 11 12
Sample Output
1
HINT
2nk <= 10^6, 1 <= pi <= 10^9。
제목
문제 풀이:
순 서 를 정 한 후 2 분 의 답 을 정 하 다.
check 앞의 2ik 갯 수 에 적어도 i 개의 만족 문제 에 대한 숫자 가 있 는 지 확인 합 니 다.
코드:
//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 1000001
#define mod 10007
#define eps 1e-9
int Num;
char CH[20];
//const int inf=0x7fffffff; //нчоч╢С
const int inf=0x3f3f3f3f;
/*
inline void P(int x)
{
Num=0;if(!x){putchar('0');puts("");return;}
while(x>0)CH[++Num]=x%10,x/=10;
while(Num)putchar(CH[Num--]+48);
puts("");
}
*/
inline ll read()
{
ll x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
inline void P(int x)
{
Num=0;if(!x){putchar('0');puts("");return;}
while(x>0)CH[++Num]=x%10,x/=10;
while(Num)putchar(CH[Num--]+48);
puts("");
}
//**************************************************************************************
int n,m,k;
int a[maxn];
int l,r,mid;
bool check(int x)
{
for(int p=1,q=0;q<n;++p)
{
if(p-1>q*2*k)
return false;
if(a[p+1]-a[p]<=x)
++p,++q;
}
return true;
}
int main()
{
n=read(),k=read();
m=2*n*k;
l=0,r=0;
for(int i=1;i<=m;i++)
{
a[i]=read();
r=max(r,a[i]);
}
sort(a+1,a+m+1);
while(l<r)
{
mid=(l+r)>>1;
if(check(mid))
r=mid;
else
l=mid+1;
}
printf("%d
",l);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
POJ 2260 (ZOJ 1949) Error Correction 문제 하나A boolean matrix has the parity property when each row and each column has an even sum, i.e. contains an even number of ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.