【AGC012E】 Camel and Oases ST表+状压dp
题目大意:一排点,两点间有距离。 初始你有一个行走值$v$,如果相邻两点距离不超过$v$你可以自由在这两点行走。
当$v$大于$0$时,你可以选择某一时刻突然飞到任意点,这样做后$v$会减半(下取整)。 问从每个位置初始出发能否到达所有位置。
点的数量$≤2*10^5$,$v≤2*10^5$,$|两点距离|≤10^9$。
我们令$l[i][j]$表示从$i$出发,一路往左走,经过所有长度不超过$v>>j$(此处的$>>$表示右移,以下都是)的边,能走到最左的点的编号。
令$r[i][j]$表示从$i$出发,一路往右走,经过所有长度不超过$v>>j$的边,能走到最右的点的编号。
令$n$表示点的数量,$m=\lceil log_2v\rceil$。
我们不难得出:从$u$号点出发,是否可以遍历完所有点的判断条件,可以转化为:
是否可以将点集分成$m+1$个块,且第$i$(从$0$到$m$)个块内边的长度均不超过$v>>i$,且第$u$号点需要在第$0$个块内。
那么,对于$[1,2^m)$中的每一个$i$($i$是一个二进制状态,$i$的第$j$($j$从$1$到$m$)位为$1$表示选择了图中第$j$个块)
求一个最大的$f[i]$,满足区间$[1,f[i]]$中的点能分成由状态i表示的若干个块。
同理,求一个最小的$g[i]$,满足区间$[g[i],n]$中的点能分成由状态i表示的若干个块。
求这个可以通过l和r的值+状压$dp$实现,时间复杂度是$O(v\ log\ v)$。
我们令$o=2^m-2$。
我们发现,若存在$i$,使得$r[f[i]][0]>=l[g[o$^$i]][0]$,那么从区间$[\ l[g[o$^$i]][0]\ ,\ r[f[i]][0]\ ]$中出发的点,显然可以遍历玩所有点。
我们可以$O(1)$打上一个标记,求答案的时候$O(n)$扫一遍,判断某个点是否被打了标记即可。
总时间复杂度:$O(n\ log\ v+v\ log\ v)$。
1 #include<bits/stdc++.h> 2 #define M 400005 3 #define YXQAK printf("Possible\n") 4 #define XFZBL printf("Impossible\n"); 5 using namespace std; 6 7 int a[M]={0},n,m,v,l[20][M]={0},r[20][M]={0}; 8 int f[M]={0},g[M]={0},p[M]={0}; 9 10 int main(){ 11 scanf("%d%d",&n,&v); 12 for(int i=1;i<=n;i++) scanf("%d",a+i); 13 sort(a+1,a+n+1); 14 for(int j=0,V=v;V;j++,V>>=1){ 15 m=max(m,j); 16 for(int i=1;i<=n;i++){ 17 int I=i+1; 18 while(I<=n&&a[I]-a[I-1]<=V) I++; 19 I--; 20 for(int ii=i;ii<=I;ii++) 21 l[j][ii]=i,r[j][ii]=I; 22 i=I; 23 } 24 } 25 m++; 26 for(int i=1;i<=n;i++) l[m][i]=r[m][i]=i; 27 for(int i=0;i<(1<<m);i++) g[i]=n; f[0]=1; 28 for(int i=1;i<(1<<m);i++){ 29 int now=1; 30 for(int j=m-1;~j;j--) 31 if((1<<j)&i) 32 f[i]=max(f[i],r[j+1][f[i^(1<<j)]]+1); 33 34 now=n; 35 for(int j=m-1;~j;j--) 36 if((1<<j)&i) 37 g[i]=min(g[i],l[j+1][g[i^(1<<j)]]-1); 38 } 39 40 for(int i=0;i<(1<<m);i++){ 41 if(r[0][f[i]]+1>=l[0][g[(1<<m)-i-1]]) 42 p[l[0][g[(1<<m)-i-1]]]++,p[r[0][f[i]]+1]--; 43 } 44 for(int i=1;i<=n;i++){ 45 p[i]+=p[i-1]; 46 if(p[i]) YXQAK; 47 else XFZBL; 48 } 49 }
转载于:https://www.cnblogs.com/xiefengze1/p/9806354.html
【AGC012E】 Camel and Oases ST表+状压dp相关推荐
- agc012E Camel and Oases(状压dp+思路题)
这题神啊.状压dp你敢信?思维难度爆表还有一堆细节要注意???orz Visjiao 原题链接:http://agc012.contest.atcoder.jp/tasks/agc012_e 大神题解 ...
- AtCoder Grand Contest 012 E Camel and Oases 状压dp
Description 有一个容量为V的包,n个接水点,坐标分别为x[] 有两种移动方式: 若两个接水点之间的距离不超过此时包的容量v,那么就可以移动 若此时v不等于0,那么可以使v=v/2(下取整) ...
- AtCoder Grand Contest 012 E - Camel and Oases 状压dp
题意 平面上有n个点.初始有V的权值,每次可以从一个点走到与他距离不超过V的点,当V>0时也可以让V/2且到达任意一个点.问从每个点出发能否遍历所有点. n,V<=200000 分析 显然 ...
- [agc012e]Camel and Oases
前言 很容易的就发现了只有log次跳跃. 然后状压DP. 似乎就是个简单题吧(怎么比12c还简单) 题意 一排点,两点间有距离. 初始你有一个行走值v,如果相邻两点距离不超过v你可以自由在这两点行走. ...
- POJ 1038 Bugs Integrated Inc (复杂的状压DP)
\(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...
- poj3254/洛谷P1896 状压dp
http://poj.org/problem?id=3254 https://www.luogu.org/problemnew/show/P1896 把这两题放在一起,解题思路差不多.以POJ的为例 ...
- POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)
poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...
- HDU 4539郑厂长系列故事――排兵布阵(状压DP)
HDU 4539 郑厂长系列故事――排兵布阵 基础的状压DP,首先记录先每一行可取的所哟状态(一行里互不冲突的大概160个状态), 直接套了一个4重循环居然没超时我就呵呵了 1 //#pragma ...
- [学习笔记]状压dp
状压 \(dp\) 1.[SDOI2009]Bill的挑战 \(f[i][j]\) 表示匹配到字符串的第 \(i\) 位状态为 \(j\) 的方案数 那么方程就很明显了,每次枚举第 \(i\) 位的字 ...
最新文章
- 代码写的烂,经常被同事怼,教你一招!
- 梯度下降原理及Python实现
- pytorch多标签分类交叉熵loss
- 别吵吵内卷了,看看人家虚拟人:连续直播70天都没工资
- XCTF-高手进阶区:web2
- 为什么手机最后 10% 的电量很不耐,最后1%的电量最耐用?
- Java 中15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁,乐观锁,分段锁,自旋锁等等
- 使用Express和MongoDB构建CRUD应用程序-第2部分
- 获取某一数据库的所有存储过程的名字
- Atitit.ide技术原理与实践attilax总结
- vgextend 扩容卷组,即把物理卷加入卷组
- 阿里UX矢量图标库–最强大的矢量图标库(Icon font制作力荐工具)
- 如何向VISUAL SVN SERVER上传文件
- 关务+物流领域的技术发展路线
- Excel 2010 SQL应用066 返回数字与文本混杂的数据
- 微信小程序 修改radio样式
- 出入库管理系统1(配件报表-后录编号)
- Deep Attention Network:基于深层注意力网络的高光谱与多光谱图像融合
- 狂神redis笔记_狂神说redis笔记(三)
- 微信小程序运营系列(三)——小程序八大运营功能及技巧
热门文章
- dsp31段最佳调音图_31段均衡器调整方法详解,音响调音师必备!
- 喝一碗孟婆汤nbsp;走一遍奈何桥
- 喝一碗孟婆汤,走一回奈何桥(FLASH转载)
- java嵌套循环_java基础之嵌套循环
- 陌上人如玉,公子世无双
- android studio json格式化,Android json格式化显示,可展开与折叠
- 流媒体技术在宽带网络的应用与发展
- SASRec: Self-Attentive Sequential Recommendation阅读笔记
- 移动网络运营商显示无服务器,无线路由器忽然拨不上号,显示网络运营商远端无响应怎么处理...
- SAP_ABAP_BADI AND NEW BADI