bzoj 3969: [WF2013]Low Power 二分

3969: [WF2013]Low Power

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。

题意

题解:

排序之后二分答案

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\n",l);
}
时间: 2024-11-05 18:48:13

bzoj 3969: [WF2013]Low Power 二分的相关文章

bzoj3969 [WF2013]Low Power

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3969 [题解] 二分答案x,贪心选取,如果选取了i个,有j对,那么要满足i<=2*j*k(不然有数就没位置放了) # include <stdio.h> # include <string.h> # include <iostream> # include <algorithm> // # include <bits/stdc++.h>

【二分贪心】Bzoj3969 [WF2013] Low Power

Description 有n个机器,每个机器有2个芯片,每个芯片可以放k个电池. 每个芯片能量是k个电池的能量的最小值. 两个芯片的能量之差越小,这个机器就工作的越好. 现在有2nk个电池,已知它们的能量,我们要把它们放在n个机器上的芯片上, 使得所有机器的能量之差的最大值最小. Input 第一行,两个正整数,n和k. 第二行,2nk个整数,表示每个电池的能量. Output 一行一个整数,表示所有机器的能量之差的最大值最小是多少. Sample Input 2 3 1 2 3 4 5 6 7

bzoj 3969 LOW Power

3969: [WF2013]Low Power Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=3969 Description 有n个机器,每个机器有2个芯片,每个芯片可以放k个电池. 每个芯片能量是k个电池的能量的最小值. 两个芯片的能量之差越小,这个机器就工作的越好. 现在有2nk个电池,已知它们的能量,我们要把它们放在n个机器上的芯片上, 使得所有机

tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)

今天看到一篇关于检测的论文<SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving>,论文中的效果还不错,后来查了一下,有一个Tensorflow版本的实现,因此在自己的机器上配置了Tensorflow的环境,然后将其给出的demo跑通了,其中遇到了一些小问题,通过查找网络上的资料解决掉了,在这里

PatentTips - Fast awake from low power mode

BACKGROUND Electronic devices, such as electronic book readers ("eBook reader devices"), cellular telephones, portable media players, desktop computers, laptops, tablet computers, netbooks, personal digital assistants, and the like, rely on elec

Network management system scheduling for low power and lossy networks

In one embodiment, a network management system (NMS) determines an intent to initialize a request-response exchange with a plurality of clients in a low power and lossy network (LLN). In response, the NMS adaptively schedules corresponding responses

BZOJ 1486 最小圈(二分+判负环)

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1486 题意:给出一个有向图,边有权值.找到一个环,使得环上边的权值之和除以环上边的个数最小. 思路:二分答案x,每条边权值减去x,之后 找负环.从每个顶点开始DFS,记录到达某个顶点的距离,设当前DFS的顶点为u,距离dis[u].下一个顶点v, 权值w,则dis[u]+w<=0时才DFS(v).另外,若v是已经遍历过的,且dis[u]+w-dis[v](这个dis[v]是之前遍历时

[CortexM0--stm32f0308]Low Power Mode

问题描述 stm32f0308正常是运行在Run mode下,这种mode是在reset之后的默认模式.Low Power Mode,即低功耗模式,用于在IC空闲时可以考虑选择进入,使系统耗能降低,在必要的时候通过唤醒在进入Run mode正常工作.Low Power Mode,在嵌入式系统中考虑的很多,也很关键,因为一般都是用移动电源供电,合理使用Low Power Mode,会很好的提高设备的续航能力. Low Power Mode方式 Sleep Mode:CPU时钟关闭,所有periph

Low Power之CPF/UPF

1 CPF The Common Power Format is a standard promoted by the Low Power Coalition at Si2. CPF is also a TCL-based language that operates on speci?cation objects and the design objects. A design object is a module, instance, net, pin or port as they app