标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 7083 | Accepted: 3522 |
Description
Input
Output
Sample Input
5 3 1 2 8 4 9
Sample Output
3
Hint
Source
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorithm> 6 #include <string> 7 #include <vector> 8 #include <set> 9 #include <map> 10 #include <queue> 11 #include <stack> 12 #include <sstream> 13 #include <iomanip> 14 using namespace std; 15 const int INF=0x4fffffff; 16 const int EXP=1e-6; 17 const int MS=100005; 18 19 int pos[MS]; 20 int N,M; 21 22 bool judge(int d) 23 { 24 int last=0; 25 int now; 26 for(int i=1;i<M;i++) //贪心法给第i头牛找宿舍 27 { 28 now=last+1; 29 while(now<N&&pos[now]-pos[last]<d) 30 now++; 31 if(now>=N) 32 return false; 33 last=now; 34 } 35 return true; 36 } 37 38 void solve() 39 { 40 sort(pos,pos+N); 41 int l=0,r=INF; 42 while(r-l>1) // 注意是区间,很多时候开区间更方便一些。 43 { 44 int mid=(l+r)/2; 45 if(judge(mid)) 46 l=mid; 47 else 48 r=mid; 49 } 50 printf("%d\n",l); 51 } 52 53 int main() 54 { 55 while(scanf("%d%d",&N,&M)!=EOF) 56 { 57 for(int i=0;i<N;i++) 58 scanf("%d",&pos[i]); 59 solve(); 60 } 61 return 0; 62 }
标签:
原文地址:http://www.cnblogs.com/767355675hutaishi/p/4375584.html