Description


有一个容量为V的包,n个接水点,坐标分别为x[]
有两种移动方式:

  1. 若两个接水点之间的距离不超过此时包的容量v,那么就可以移动
  2. 若此时v不等于0,那么可以使v=v/2(下取整),然后跳到任意一个位置

对于每一个接水处作为出发点,分别回答能否到达所有其余接水点
n,V≤105n,V\le 10^5n,V≤105
∀i≤n,  xi≤109\forall i\le n,\; x_i\le10^9∀i≤n,xi​≤109

Solution


操作2最多只有logV次,而同一个v能走到的位置是若干不相交的线段
问题变成:我们在V最大的时候强制选一个线段,每一个v最多选一个线段,问能否选出一个线段的集合覆盖整个数轴

考虑状压dp,设f[x]表示选择v状态为x的时候,从1起能覆盖到的最右边,g[x]表示从n起能覆盖到的最左边,当f[x]和g[x]在某一个V的线段内部时就是可行的

一个小trick就是记录left[j]表示j往右最多到哪里,这样转移就非常方便了。最后统计答案的时候要注意一下,一开始写萎T掉了

Code


#include <stdio.h>
#include <string.h>
#include <algorithm>
#define rep(i,st,ed) for (int i=st;i<=ed;++i)
#define fill(x,t) memset(x,t,sizeof(x))const int N=400005;int f[N],g[N],p[N],L[N],R[N],ans[N];
int left[25][N],righ[25][N],bel[N];
int n,V,tot;int read() {int x=0,v=1; char ch=getchar();for (;ch<'0'||ch>'9';v=(ch=='-')?(-1):(v),ch=getchar());for (;ch<='9'&&ch>='0';x=x*10+ch-'0',ch=getchar());return x*v;
}void pre(int v,int id) {for (int i=1,j;i<=n;i=j+1) {for (j=i;j<n&&p[j+1]-p[j]<=v;) j++;rep(k,i,j) left[id][i]=j,righ[id][j]=i;}
}void solve() {for (int i=0,lim=(1<<tot);i<lim;++i) {g[i]=n+1;}for (int i=0,lim=(1<<tot);i<lim;++i) {rep(j,0,tot-1) if ((i>>j)&1) {f[i]=std:: max(f[i],left[j][f[i-(1<<j)]+1]);g[i]=std:: min(g[i],righ[j][g[i-(1<<j)]-1]);}}for (int i=0,lim=(1<<tot);i<lim;++i) {int j=lim-i-1;if (f[i]+1>=L[bel[f[i]+1]]&&g[j]-1<=R[bel[f[i]+1]]) {ans[bel[f[i]+1]]=1;}}
}int main(void) {fill(righ,63);n=read(),V=read();rep(i,1,n) p[i]=read();for (int v=V/2;;v>>=1) {pre(v,tot++);if (!v) break;}for (int i=1,j;i<=n;i=j+1) {bel[i]=++bel[0];for (j=i;j<n&&p[j+1]-p[j]<=V;) bel[++j]=bel[0];L[bel[0]]=i,R[bel[0]]=j;}solve();rep(i,1,n) if (ans[bel[i]]) puts("Possible");else puts("Impossible");return 0;
}

AtCoder Grand Contest 012 E Camel and Oases 状压dp相关推荐

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

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

  2. AGC 012 E Camel and Oases - 状压dp

    题目大意:数轴上有n个不同的点,你有一个能量,初始是v.可以进行两种操作,走到左边/右边一个点,如果当前能量大于等于距离.或者随意跳到一个点,但是要求能量不是0并且能量要减半(向下取整).对每个点求从 ...

  3. Atcoder Grand Contest 012 B - Splatter Painting解题报告

    题目:http://agc012.contest.atcoder.jp/tasks/agc012_b 有一个n点m边的图,(不一定联通) 还有q个操作:每次将一个点v及其周围距离<=d的点涂成颜 ...

  4. AtCoder Grand Contest 012 B Splatter Painting (反向处理 + 记忆化)

    题目链接  agc012 Problem B 题意  给定一个$n$个点$m$条边的无向图,现在有$q$个操作.对距离$v$不超过$d$的所有点染色,颜色编号为$c$. 求每个点最后的颜色状态. 倒过 ...

  5. AtCoder Grand Contest 012 B Splatter Painting(记忆化搜索)

    题意: 给一个包含N个顶点,M条边,无自环和重边的简单无向图,初始每个点颜色都为0,每条边的长度为1,连接着ai,bi两个节点.经过若干个操作, 每次将与某个点vi距离不超过di的所有点染成某种颜色c ...

  6. 【每日亿题#12】AtCoder Grand Contest 021 (A ~ F)全部题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 AtCoder Grand Contest 021 题解 A. Digit Sum 2 B. ...

  7. AtCoder Grand Contest 008: Contiguous Repainting(思维)

    Contiguous Repainting 时间限制: 2 Sec  内存限制: 256 MB 提交: 69  解决: 22 [提交][状态][讨论版][命题人:admin] 题目描述 There a ...

  8. AtCoder Grand Contest 017

    AtCoder Grand Contest 017 A - Biscuits 有\(n\)个数,问有多少个集合的数的和模\(2\)余\(P\). 随便\(dp\)一下就好了. #include< ...

  9. AtCoder题解——AtCoder Grand Contest 048——A - atcoder < S

    题目相关 题目链接 AtCoder Grand Contest 048 A 题,https://atcoder.jp/contests/agc048/tasks/agc048_a. Problem S ...

最新文章

  1. aosp 本地版本管理_本地代码版本管理
  2. VMware-使用VMware在本地搭建多个CentOS虚机
  3. 算法练习day11——190329(平衡二叉树、搜索二叉树、完全二叉树)
  4. netty依赖_高性能:《一遍文章带你看懂 Netty世界》
  5. go语言csv文件的读取与写入
  6. typeof instanceof
  7. asp.net 使用my97 datepicker实现前后两个日期的范围界定
  8. 精雕道路怎么遍弧形_【养护技术】道路“创可贴”——沥青冷补料 六大优势助力道路养护...
  9. 决策树 prepruning_智能建筑运维前探 AI天天见之五:决策树算法应用探索
  10. Data - 信息获取途径汇总
  11. POI导入数据的过程中,遇到读取以科学计数法显示的数据
  12. mysql只update不做修改_105岁老人抽烟喝酒不运动,长寿秘诀:只做4件事,不做1件事...
  13. Android与物联网设备通信-网络模型分层
  14. Tab,回车/换行组合符
  15. linux下抓取网页快照
  16. 真实可行的Python清屏命令
  17. android获取wifi支持的信道,Android获取当前联接wifi的信道
  18. Word最常用的100个通用快捷键
  19. 图片放大不模糊,如何实现?
  20. 外贸收款——国际主流收款方式

热门文章

  1. 晋拓股份上交所上市:市值26亿 张东家族企业色彩浓厚
  2. SQL SERVER 服务器名称的更改
  3. 什么是概念模型?概念模型的作用是什么?
  4. VPCS使用教程:模拟GNS3虚拟PC
  5. 蓝牙BLE芯片PHY6222之I2C主从通信
  6. webpack5打包图片报错——Module parse failed: Octal literal in strict mode 图片不能正常显示
  7. 我的世界服务器神秘修改节点,我的世界如何用NBT指令方块修改神秘时代4
  8. 荆楚理工学院计算机科学专业,2017荆楚理工学院专业排名
  9. Windows 7 SP1补丁包 (32位) V 2013.10 官方版
  10. 理解卷积的空间不变性和通道特异性