AGC 012 E Camel and Oases - 状压dp
题目大意:数轴上有n个不同的点,你有一个能量,初始是v。可以进行两种操作,走到左边/右边一个点,如果当前能量大于等于距离。或者随意跳到一个点,但是要求能量不是0并且能量要减半(向下取整)。对每个点求从这个点出发能否到达所有点。一个点可以经过多次。n,v≤2×105,∣xi∣≤109n,v\le2\times10^5,|x_i|\le10^9n,v≤2×105,∣xi∣≤109
题解:
首先v只会减半logv次就拜拜了。
考虑一开始在一个点,你能到达一个区间。
然后你需要把哪些减半后的v用于走左边,剩下的走右边。
直接枚举子集就死了,转为求如果想要从1走到i,最小能从多小的j出发走到n。处理LF[S]表示S这个集合的v最远能从1走到那里,RF同理,然后就做完了。
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;inline int inn() { int x;scanf("%d",&x);return x; }const int N=270000,LOG=20;int x[N],v[N],L[LOG][N],R[LOG][N],val[N],Lf[N],Rf[N];
int main()
{int n=inn(),k=0;v[0]=inn();rep(i,1,n) x[i]=inn();while(v[k]) v[k+1]=v[k]>>1,k++;int all=(1<<k)-1;rep(i,0,k){L[i][1]=1;for(int j=1+1;j<=n;j++) if(x[j]-x[j-1]<=v[i]) L[i][j]=L[i][j-1];else L[i][j]=j;R[i][n]=n;for(int j=n-1;j>=0;j--) if(x[j+1]-x[j]<=v[i]) R[i][j]=R[i][j+1];else R[i][j]=j;}rep(i,1,all) Lf[i]=1,Rf[i]=n;Lf[0]=0,Rf[0]=n+1;rep(i,0,all) rep(j,1,k) if(!((i>>(j-1))&1)) Lf[i|(1<<(j-1))]=max(Lf[i|(1<<(j-1))],R[j][Lf[i]+1]),Rf[i|(1<<(j-1))]=min(Rf[i|(1<<(j-1))],L[j][Rf[i]-1]);rep(i,0,n+1) val[i]=n+n;rep(i,0,all) val[Lf[i]]=min(val[Lf[i]],Rf[all^i]);for(int i=n;i>=0;i--) val[i]=min(val[i],val[i+1]);rep(i,1,n) printf(val[L[0][i]-1]<=R[0][i]+1?"Possible\n":"Impossible\n");return 0;
}
AGC 012 E Camel and Oases - 状压dp相关推荐
- 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 ST表+状压dp
题目大意:一排点,两点间有距离. 初始你有一个行走值$v$,如果相邻两点距离不超过$v$你可以自由在这两点行走. 当$v$大于$0$时,你可以选择某一时刻突然飞到任意点,这样做后$v$会减半(下取整 ...
- agc012E Camel and Oases(状压dp+思路题)
这题神啊.状压dp你敢信?思维难度爆表还有一堆细节要注意???orz Visjiao 原题链接:http://agc012.contest.atcoder.jp/tasks/agc012_e 大神题解 ...
- POJ 1038 Bugs Integrated Inc (复杂的状压DP)
\(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...
- codeforces 8C. Looking for Order 状压dp
题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...
- UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)
整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...
- POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)
poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...
- 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★
昨天的每日DP我还在写01背包,今天就到状压DP了,真刺激. P1879 [USACO06NOV]Corn Fields G 题目链接 输入 2 3 1 1 1 0 1 0 输出 9 一道简单的状压D ...
最新文章
- Android学习 —— 数据的存储与访问方式一: 文件存取
- Hyper-V 网卡 load failed
- CF 1098 C. Construct a tree
- Asp.net实现在线截图(大图截取为小图)
- python3菜鸟教程-总算理解python3中文入门教程
- 前端 CSS层叠性 CSS选择器优先级
- Visual Studio 2019连接自动的Sql Server开发版数据库(C#语言)
- java 位运算符赋值_java-运算符(算术、赋值 =、关系、逻辑、三元、位运算符)...
- 英雄联盟更新后服务器还在维护吗,英雄联盟今天维护到什么时候结束 11月12日停机更新维护公告...
- Android NDK调试出错Unknown Application ABI, Unable to detect application ABI#39;s的解决方式...
- 5月第二周全球五大顶级域名总量新增10.5万个
- wordpress发送测试邮件
- orcl数据库先决条件检查时失败
- oracle数据库建语句吗,Oracle建表语句是什么_数据库
- Socket网络编程
- 企业网的规划与设计(eNSP)
- 职场沟通10个小技巧 让你迅速融入团队
- windows 运行 自定义 命令 的实现
- Android展开的TextView和点击底部滚动到顶部
- 摘要-The Inventor Mentor
热门文章
- 嘉楠科技任命成进为首席财务官:高管变动频繁,多名核心股东减持
- 搜索引擎:Elasticsearch、Solr、Lucene
- 蓝桥杯打卡 报时助手
- 苹果x来电闪光灯怎么设置_手机上使用的记事备忘便签软件怎么设置来电提醒功能?...
- celery beat一直不触发任务(卡在Writing entries...)
- 涨姿势了,蜻蜓FM源码剖析
- Win10安装程序提示“不能打开要写入的文件xxxxx”如何解决
- Unity 播放声音
- rust前哨站_rust - diesel 1 的安装与使用 (连接数据库,读取)
- android 强制打开gps定位_Android判断GPS是否开启和强制帮用户打开GPS