• hdu5248 序列变换 二分


    题目链接:

    http://acm.hdu.edu.cn/showproblem.php?pid=5248

    题意:

    题解:

    二分
    从上一个位置到达这个位置,可以通过上一个位置推出当前位置必须到达的最小值now,如果now小于a[i]就无所谓了,因为肯定行,直接更新下一个now;如果now-a[i]大于了当前二分出的伸展极限就不行。

    看了别人代码,还是看了很久,还是太菜啊。。

    代码:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 #define MS(a) memset(a,0,sizeof(a))
     5 #define MP make_pair
     6 #define PB push_back
     7 const int INF = 0x3f3f3f3f;
     8 const ll INFLL = 0x3f3f3f3f3f3f3f3fLL;
     9 inline ll read(){
    10     ll x=0,f=1;char ch=getchar();
    11     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    12     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    13     return x*f;
    14 }
    15 //////////////////////////////////////////////////////////////////////////
    16 const int maxn = 1e5+10;
    17 
    18 int n,a[maxn];
    19 
    20 bool check(int x){
    21     int now=-INF; // 可能x很大,对于a[2]可以到的最小值a[1]-x+1可以变得很负
    22     for(int i=1; i<=n; i++){
    23         if(now-a[i]>x) return false;
    24         now = max(now+1,a[i]-x+1); // now表示当前值a[i]可以变到的最小的值+1之后就是a[i+1]的一个必须变到的值,a[i]-x+1也是,取他们的最大值就是a[i+1]必须要到达的最小值 如果a[i+1]>now,就一定可以,更新下一个now的时候,就是a[i+1]-x+1了。
    25     }
    26     return true;
    27 }
    28 
    29 int main(){
    30     int T = read();
    31     for(int cas=1; cas<=T; cas++){
    32         n = read();
    33 
    34         for(int i=1; i<=n; i++){
    35             a[i] = read();
    36         }
    37 
    38         int ans = 0;
    39         int l = 0, r = 1e6;
    40         while(l <= r){
    41             int mid = (l+r)/2;
    42             if(check(mid)) ans=mid,r=mid-1;
    43             else l=mid+1;
    44         }
    45 
    46         cout << "Case #" << cas << ":
    " << ans << endl;
    47     }
    48 
    49     return 0;
    50 }
  • 相关阅读:
    监控网页是否有变化
    设置开机自动启动进程
    nagios-调用脚本
    连接数据库出现10061错误
    小程序修改默认的radio样式
    小程序端,做类似于支付宝充值话费或流量的样式
    jq 在字符串中,去掉指定的元素
    vue 使用 proxyTable 解决跨域问题
    vue-cli 动态绑定图片失败
    vue-cli 使用 font-awesome 字体插件
  • 原文地址:https://www.cnblogs.com/yxg123123/p/6827632.html
Copyright © 2020-2023  润新知