bzoj3969 [WF2013]Low Power
2018-01-22 07:53
176 查看
题目
看见最大值最小,明显可以看出这是一道二分答案的题。如何判断呢。
首先,我们先对原数组排序,这样每次的差最小一定会在两个相邻的数之间。所以排好序之后,判断的时候,只要从前往后扫,只要相邻两个数的差小于二分的答案x,就把它们放入一个电池,然后把剩下的电池依次放入,判断每个时刻是否可行就好了。
看见最大值最小,明显可以看出这是一道二分答案的题。如何判断呢。
首先,我们先对原数组排序,这样每次的差最小一定会在两个相邻的数之间。所以排好序之后,判断的时候,只要从前往后扫,只要相邻两个数的差小于二分的答案x,就把它们放入一个电池,然后把剩下的电池依次放入,判断每个时刻是否可行就好了。
#include<bits/stdc++.h> #define N 1000005 using namespace std; int n,k,tot,cnt,num; int a[N+5],in[N+5]; int l,r,ans,mid; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++; } inline int read() { int x=0,b=1; char c=nc(); for(;!(c<='9'&&c>='0');c=nc())if(c=='-')b=-1; for(;c<='9'&&c>='0';c=nc())x=x*10+c-'0'; return x*b; } inline void write(int x) { if(x==0)putchar('0'); else { char buf[15]; int len=0; if(x<0)putchar('-'),x=-x; while(x)buf[++len]=x%10+'0',x/=10; for(int i=len;i>=1;i--)putchar(buf[i]); } putchar(' '); } inline bool check(int x) { memset(in,false,sizeof(in)); cnt=0;num=0; for(int i=1;i<=tot-1;i++) { if(!in[i]&&a[i+1]-a[i]<=x&&cnt<n) { in[i]=in[i+1]=true; cnt++; } } if(cnt!=n)return false; cnt=0; for(int i=tot;i>=1;i--) { if(!in[i])num++; else { cnt++; if(num<(k-1)*cnt)return false; } } return true; } int main() { freopen("in.txt","r",stdin); n=read(),k=read(),tot=2*n*k; for(int i=1;i<=tot;i++)a[i]=read(); sort(a+1,a+tot+1); l=0,r=1000000000; ans=~0u>>1; while(l<r) { mid=(l+r)/2; if(check(mid))ans=min(ans,mid),r=mid-1; else l=mid+1; } if(check(l))ans=min(ans,l); cout<<ans; return 0; }
相关文章推荐
- bzoj3969 [WF2013]Low Power
- BZOJ3969 [WF2013]Low Power
- BZOJ 3969: [WF2013]Low Power
- 【二分贪心】Bzoj3969 [WF2013] Low Power
- bzoj 3969: [WF2013]Low Power
- 【 bzoj 3955 】[WF2013]Surely You Congest - 网络流 SPFA
- 【建图+拓扑判环】BZOJ3953: [WF2013]Self-Assembly
- 套题:wf2013 (1/8)
- [BZOJ3969]WF2013 Low Power|二分答案|贪心
- [bzoj3955] [WF2013]Surely You Congest
- BZOJ_3969_[WF2013]Low Power_二分答案
- bzoj 3969: [WF2013]Low Power 二分
- bzoj3953: [WF2013]Self-Assembly
- bzoj 3969 WF2013 Low Power [贪心] [二分答案]
- [bzoj3953] [WF2013]Self-Assembly
- BZOJ3970 WF2013 G Map Tiles
- 【BZOJ】3971 [WF2013]Матрёшка
- 图解微软性能测试工具VSTS2008 Load Test Agent安装 2013也差不多
- BZOJ 3123 [Sdoi2013]森林 主席树+启发式合并
- NOIP普及组2013 计数问题