前言

很容易的就发现了只有log次跳跃。
然后状压DP。
似乎就是个简单题吧(怎么比12c还简单)

题意

一排点,两点间有距离。
初始你有一个行走值v,如果相邻两点距离不超过v你可以自由在这两点行走。
当v大于0时,你可以选择某一时刻突然飞到任意点,这样做后v会减半(下取整)。
问从每个位置初始出发能否到达所有位置。

DP

预处理left[i,j]表示在i行走值已经减半j次能往左走到哪,同理有right。
我们每次从i点出发,用行走值v可以走到[l,r]。
那么你需要将接下来的行走值分成两部分然后覆盖[1,l-1]和[r+1,n]。
我们希望预处理一个mi[i]表示用行走值中的一部分覆盖[1,i],另一部分能覆盖[x,n],x的最小值是多少。
然后为了这个先状压DP一下,设f[s]表示用s集合里的行走值覆盖[1,x]最大的x是多少,每次可以枚举一个不在s里的i然后转移,用这个i去覆盖接下来一段。
同理会有个g[s]表示覆盖[x,n]。
于是接下来再枚举拿哪些覆盖前缀即可处理mi。

#include<cstdio>
#include<algorithm>
#define fo(i,a,b) for(i=a;i<=b;i++)
#define fd(i,a,b) for(i=a;i>=b;i--)
using namespace std;
const int maxn=200000+10,lgn=20;
int f[maxn*5],g[maxn*5],mi[maxn],left[maxn][lgn+10],right[maxn][lgn+10],v[lgn+10],x[maxn];
int i,j,k,l,r,s,t,n,m,tot,top;
int main(){
    scanf("%d%d",&n,&t);
    fo(i,1,n) scanf("%d",&x[i]);
    v[0]=t;
    t/=2;
    while (t){        v[++top]=t;
        t/=2;
    }
    v[++top]=0;
    reverse(v,v+top+1);
    fo(j,0,top){        left[1][j]=1;
        fo(i,2,n)
            if (x[i]-x[i-1]<=v[j]) left[i][j]=left[i-1][j];else left[i][j]=i;
        right[n][j]=n;
        fd(i,n-1,1)
            if (x[i+1]-x[i]<=v[j]) right[i][j]=right[i+1][j];else right[i][j]=i;
    }
    f[0]=0;
    g[0]=n+1;
    fo(s,1,(1<<(top+1))-1){        f[s]=0;
        g[s]=n+1;
        fo(i,0,top)
            if (s&(1<<i)){                r=s^(1<<i);
                if (f[r]==n) f[s]=n;
                else f[s]=max(f[s],right[f[r]+1][i]);
                if (g[r]==1) g[s]=1;
                else g[s]=min(g[s],left[g[r]-1][i]);
            }
    }
    fo(i,0,n) mi[i]=n+2;
    fo(i,0,(1<<top)-1){        r=((1<<top)-1)^i;
        mi[f[i]]=min(mi[f[i]],g[r]);
    }
    fd(i,n-1,0) mi[i]=min(mi[i],mi[i+1]);
    fo(i,1,n){        l=left[i][top];r=right[i][top];
        if (mi[l-1]<=r+1) printf("Possible\n");else printf("Impossible\n");
    }
}

[agc012e]Camel and Oases相关推荐

  1. agc012E Camel and Oases(状压dp+思路题)

    这题神啊.状压dp你敢信?思维难度爆表还有一堆细节要注意???orz Visjiao 原题链接:http://agc012.contest.atcoder.jp/tasks/agc012_e 大神题解 ...

  2. AGC012 - E: Camel and Oases

    原题链接 题意简述 沙漠中有n(n≤2×105)个排成一条直线的绿洲,一头储水量为V(V≤2×105)的骆驼. 骆驼有两个操作: 走到距离在V以内的一个绿洲. 飞到任意一个绿洲,但V减少一半.V=0时 ...

  3. 【agc012E】Camel and Oases

    Portal --> agc012 Description 有一排点,两点间有一定距离,初始的时候有一个行走值\(v\),如果说两点间距离不超过\(v\),那么可以在这两点间自由行走,如果当前\ ...

  4. 【AGC012E】 Camel and Oases ST表+状压dp

    题目大意:一排点,两点间有距离. 初始你有一个行走值$v$,如果相邻两点距离不超过$v$你可以自由在这两点行走.  当$v$大于$0$时,你可以选择某一时刻突然飞到任意点,这样做后$v$会减半(下取整 ...

  5. AT2365-[AGC012E]Camel and Oases【状压dp】

    正题 题目链接:https://www.luogu.com.cn/problem/AT2365 题目大意 一个数轴上有nnn个点,开始你有个水壶容量为VVV,你每次有两个操作 走到一个距离与你不超过V ...

  6. 【DP】AGC012 E Camel and Oases

    分析: 有点套路的状压题 很显然,最多logV层,所以可以记录每一层的选取状态(第一层保证不能选). 定义f1(mask)f1(mask)f1(mask)表示选取状态为mask时,从最左端开始连续覆盖 ...

  7. AtCoder Grand Contest 012 E Camel and Oases 状压dp

    Description 有一个容量为V的包,n个接水点,坐标分别为x[] 有两种移动方式: 若两个接水点之间的距离不超过此时包的容量v,那么就可以移动 若此时v不等于0,那么可以使v=v/2(下取整) ...

  8. 【AtCoder】【模拟】【模型转化】Camel and Oases(AGC012)

    题意: 有一个骆驼,n个绿洲遍布在数轴上,第i个绿洲的坐标为x[i],保证x[i]单增.骆驼的驼峰有体积初始值V.当驼峰的体积变为v的时候,驼峰中至多只能够存储v L的水.骆驼希望走完所有的绿洲,并且 ...

  9. AtCoder Grand Contest 012 E - Camel and Oases 状压dp

    题意 平面上有n个点.初始有V的权值,每次可以从一个点走到与他距离不超过V的点,当V>0时也可以让V/2且到达任意一个点.问从每个点出发能否遍历所有点. n,V<=200000 分析 显然 ...

最新文章

  1. Guava 中的 Stopwatch 是个什么鬼?
  2. [BZOJ2095]Bridges
  3. linux下配置myBase7.ini
  4. 从零开始学习python:demo2.3
  5. ckks方案优化最好的_网站优化关键词怎么选?好的关键词长什么样?
  6. 屏幕坏点检测图片_电视屏幕出现坏点?行家会这样做!
  7. android开发蓝牙自动连接电脑上,Android蓝牙开发之自动连接设备
  8. jQuery easing 使用方法
  9. PyTorch 1.0 中文文档:torch.Storage
  10. 从零开始打造数据中心的N道门槛 | 又拍干货分享
  11. OO第一单元总结——多项式求导
  12. BZOJ.4650.[NOI2016]优秀的拆分(后缀数组 思路)
  13. frameset框架如何使左边页面显示,隐藏?wj-wangjun
  14. 阵列天线方向图及其MATLAB仿真,阵列天线方向图及其MATLAB仿真
  15. 00001__伊丽莎白福尔摩斯
  16. idrac给服务器重装系统,DELL服务器如何使用iDRAC安装操作系统
  17. OpenCV-绘制圆角矩形
  18. 修正米勒编码matlab,修正米勒编码信源解码电路及其解码方法和节能控制方法
  19. 完善:HTML5表单新特征简介与举例——张鑫旭
  20. GTD时间管理学习day01---基本原理

热门文章

  1. python学习 day013打卡 内置函数
  2. Django 项目试炼blog(10) --补充 滑动验证码
  3. 如何用ajax实现页面自动刷新,Ajax实现页面自动刷新实例解析
  4. 求助!matlab软件下SVM(支持向量机)做回归预测,软件版本为2016b看,老是报错看,不知道怎么解决这个问题。
  5. 炒股流程|开户流程|如何炒股
  6. javaweb主页设置
  7. 轻薄游戏本没性能?醒醒 外星人来了
  8. openlayes调用arcgis wms服务跨域问题(arcgis server10.2)
  9. python IDEL中显示No module named requests错误
  10. 【刷题日记】网易——牛牛的闹钟