码迷,mamicode.com
首页 > 其他好文 > 详细

二分搜索 2015百度之星初赛1 1003 序列变换

时间:2015-05-31 10:54:39      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

 

题目传送门

 1 /*
 2     二分搜索:在0~1e6的范围找到最小的max (ai - bi),也就是使得p + 1 <= a[i] + c or a[i] - c
 3     比赛时以为是贪心,榨干智商也想不出来:(
 4 */
 5 #include <cstdio>
 6 #include <algorithm>
 7 #include <cstring>
 8 #include <cmath>
 9 #include <iostream>
10 using namespace std;
11 
12 const int MAXN = 1e5 + 10;
13 const int INF = 0x3f3f3f3f;
14 int a[MAXN];
15 int n;
16 
17 bool check(int c)
18 {
19     int p = -1e6;
20     for (int i=1; i<=n; ++i)
21     {
22         int now = max (p + 1, a[i] - c);
23         if (now > a[i] + c)    return false;
24         p = now;
25     }
26 
27     return true;
28 }
29 
30 int main(void)        //2015百度之星初赛1 1003 序列变换
31 {
32     int t, cas = 0;
33     scanf ("%d", &t);
34     while (t--)
35     {
36         scanf ("%d", &n);
37         for (int i=1; i<=n; ++i)    scanf ("%d", &a[i]);
38 
39         int l = 0, r = 1e6;
40         while (l < r)
41         {
42             int mid = (l + r) >> 1;
43             if (check (mid))    r = mid;
44             else    l = mid + 1;
45         }
46 
47         printf ("Case #%d:\n", ++cas);
48         printf ("%d\n", l);
49     }
50 
51     return 0;
52 }
53 
54 /*
55 2
56 2
57 1 10
58 3
59 2 5 4
60 */

 

二分搜索 2015百度之星初赛1 1003 序列变换

标签:

原文地址:http://www.cnblogs.com/Running-Time/p/4541596.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!