题意:有$n$个数轴上的绿洲,给定它们的坐标,有一只骆驼想要访问所有绿洲,当它的驼峰容量为$V$时,它可以走到和当前绿洲距离$\leq V$的绿洲,并可以继续走,它也可以用一次跳跃到达任意一个绿洲,只不过这样会让驼峰容量变为$\left\lfloor\frac V2\right\rfloor$,问它可以从哪些位置开始使得最终可以到达所有绿洲

当$V$为定值时,它不跳跃就能到达的地方是许多个区间,每个区间内相邻两点距离$\leq V$,先对所有的$O(\log V)$个$V$预处理出这些区间,我们把$V'=\left\lfloor\frac V{2^i}\right\rfloor$时的这些区间称为第$i$层的区间

问题变为:硬点$0$层选一个区间,在$0$层以外每层选一个区间,使得这些区间的并是$[1,n]$,问是否可行

考虑状压,设$fl_i=x$表示在$i$状态的层中选了区间,最远能覆盖到$[1,x]$,转移就枚举不在$i$中的层$j$,加入$j$层中包含$fl_i$的右端点最大的区间即可,类似地定义$fr_i$,转移也是类似的,注意这里的状压不包括$0$层

最后对$0$层的每一个区间$[l,r]$,如果存在$x$使得$fl_x\geq l-1,fr_{all-x}\leq r+1$那么整个区间都可以,直接枚举所有$x$给区间打标记即可

状压DP那一步好厉害啊...

#include<stdio.h>
void fmax(int&a,int b){
	if(b>a)a=b;
}
void fmin(int&a,int b){
	if(b<a)a=b;
}
int x[200010],l[20][200010],r[20][200010],n;
void pre(int p,int d){
	int*l=::l[p],*r=::r[p],i;
	l[1]=1;
	for(i=2;i<=n;i++)l[i]=x[i]-x[i-1]>d?i:l[i-1];
	r[n]=n;
	for(i=n-1;i>0;i--)r[i]=x[i+1]-x[i]>d?i:r[i+1];
	l[0]=1;
	r[n+1]=n;
}
int fl[262144],fr[262144],s[200010];
void gao(int l,int r){
	if(l<=r){
		s[l]++;
		s[r+1]--;
	}
}
int main(){
	int V,M,i,j;
	scanf("%d%d",&n,&V);
	for(i=1;i<=n;i++)scanf("%d",x+i);
	for(M=0;V;V>>=1)pre(M++,V);
	pre(M,0);
	fr[0]=n+1;
	for(i=1;i<1<<M;i++){
		fr[i]=n;
		for(j=0;j<M;j++){
			if(i>>j&1){
				fmax(fl[i],r[j+1][fl[i^(1<<j)]+1]);
				fmin(fr[i],l[j+1][fr[i^(1<<j)]-1]);
			}
		}
	}
	for(i=0;i<1<<M;i++){
		gao(l[0][fr[((1<<M)-1)^i]-1],r[0][fl[i]+1]);
	}
	for(i=1;i<=n;i++){
		s[i]+=s[i-1];
		puts(s[i]?"Possible":"Impossible");
	}
}

[AGC012E]Camel and Oases的更多相关文章

  1. AGC012 - E: Camel and Oases

    原题链接 题意简述 沙漠中有个排成一条直线的绿洲,一头储水量为的骆驼. 骆驼有两个操作: 走到距离在V以内的一个绿洲. 飞到任意一个绿洲,但V减少一半.V=0时不能飞. 问骆驼依次从每个绿洲出发,能否 ...

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

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

  3. 【agc012E】Camel and Oases

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

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

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

  5. Agc012_E Camel and Oases

    传送门 题目大意 坐标轴上有$n$个坐标,第$i$个坐标是$x_i$,初始你有一个容量$V$,当两个给定的坐标距离不超过$V$时,你可以从一个坐标到达另一个坐标,同时你还可以令$V=\lfloor \ ...

  6. AtCoder Grand Contest 012

    AtCoder Grand Contest 012 A - AtCoder Group Contest 翻译 有\(3n\)个人,每一个人有一个强大值(看我的假翻译),每三个人可以分成一组,一组的强大 ...

  7. 【AtCoder】AGC012

    AGC012 A - AtCoder Group Contest 从最后开始间隔着取就行 #include <bits/stdc++.h> #define fi first #define ...

  8. A♂G&C012

    A♂G&C012 A AtCoder Group Contest 从大到小sort后输出\(a_2+a_4+a_6+\ldots a_{2n}\) 好♂啊,只会背结论/kk B Splatte ...

  9. Camel运行原理分析

    Camel运行原理分析 以一个简单的例子说明一下camel的运行原理,例子本身很简单,目的就是将一个目录下的文件搬运到另一个文件夹,处理器只是将文件(限于文本文件)的内容打印到控制台,首先代码如下: ...

随机推荐

  1. 【洛谷 P1707】 刷题比赛 (矩阵加速)

    题目连接 很久没写矩阵加速了,复习一下,没想到是一道小毒瘤题. 状态矩阵\(a[k],b[k],c[k],a[k+1],b[k+1],c[k+1],k,k^2,w^k,z^k,1\) 转移矩阵 0, ...

  2. querySelector()与querySelectorAll()

    1.querySelector() 参数:css选择器 返回匹配指定css选择器元素的第一个子元素 2.querySelectorAll() 参数:css选择器 返回匹配指定css选择器的所有元素

  3. Android使用TextView实现跑马灯效果(自定义控件)

    对于一个长的TetxView 折行显示是一个很好的办法,另一种方法就是跑马灯显示(单行滚动) 1.折行显示的长TextView <LinearLayout xmlns:android=" ...

  4. 纠结于arch+xfce还是xubuntu

    现在用的是ubuntu gnome版 http://www.tuicool.com/articles/6r22eyU 现在纠结于arch+xfce还是xubuntu,因为不想在gnome下面搞什么美化 ...

  5. Django2.0如何配置urls文件

    刚开始学django,创建的第一个工程无法启动,后来发现是由于教程是针对较低版本的Django,我用的是Django2.0和Python3.6,两个都是发文为止的最新版本,urls文件设置方法和旧版本 ...

  6. vue-router 基础

    安装 NPM npm install vue-router 如果在一个模块化工程中使用它,必须要通过 Vue.use() 明确地安装路由功能: import Vue from 'vue' import ...

  7. swiper 滑动插件,小屏单个显示滑动,大屏全部显示

    var currSwiperIndex=0; function widthHandle(){ var level = widthLevel(); if(level==1){ //单个显示,滑动 if( ...

  8. FineReport——自定义控件实现填报提交事件和校验

    在报表内部或者在引用报表的HTML页面,定义一个按钮标签,通过FR提供的方法实现提交功能. <button onclick="_g('${sessionID}').writeRepor ...

  9. Linux 日志系统及分析

    简介 在Centos 7.x / RHEL 7.x 的版本,系统日志是由一个名为 rsyslog的服务管理的,默认的日志守护进程为 rsyslog , rsyslog 是 syslog 的升级版本,默 ...

  10. Linux下几种并发服务器的实现模式

    Linux下的几种并发服务器的设计模式 1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. ...