bzoj4525[Usaco2016 Jan]Angry Cows
生活随笔
收集整理的這篇文章主要介紹了
bzoj4525[Usaco2016 Jan]Angry Cows
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
bzoj4525[Usaco2016 Jan]Angry Cows
題意:
有N個草堆在數(shù)軸的不同位置,向坐標(biāo)x處扔炸彈,[x?R,x+R]的草堆都會燃爆。?K個炸彈,問如果要引爆所有的草堆最小的R。草堆數(shù)最多50000,坐標(biāo)最大為109
題解:
二分R,判定時從小到大枚舉草堆,如果這個草堆沒被炸就在這里放炸彈(實(shí)際上是放在此處坐標(biāo)+R的位置),炸掉與它距離≤2R的草堆,重復(fù)上述操作。本弱一開始以為炸掉的是與它距離≤2R+1的草堆,調(diào)了0.5hQAQ
代碼:
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define inc(i,j,k) for(int i=j;i<=k;i++) 5 #define INF 0x3fffffff 6 using namespace std; 7 8 int n,k,x[60000]; 9 int main(){ 10 scanf("%d%d",&n,&k); inc(i,1,n)scanf("%d",&x[i]); sort(x+1,x+n+1); 11 int l=0,r=x[n],ans; 12 while(l<=r){ 13 int mid=(l+r)>>1,pre=-INF,tot=0; bool f=0; 14 inc(i,1,n){ 15 if(x[i]-pre>2*mid)tot++,pre=x[i]; 16 if(tot>k){f=1; break;} 17 } 18 if(!f)r=mid-1,ans=mid;else l=mid+1; 19 } 20 printf("%d",ans); 21 return 0; 22 }?
20160517
轉(zhuǎn)載于:https://www.cnblogs.com/YuanZiming/p/5732632.html
總結(jié)
以上是生活随笔為你收集整理的bzoj4525[Usaco2016 Jan]Angry Cows的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 78. Spring Boot完美使用F
- 下一篇: 精选CSDN的ACM-ICPC五星博客