传送门

一道有意思的题。

一开始想错了,以为一直lowerlowerlower_boundboundbound就可以解决询问,结果交上去TLE了之后才发现时间复杂度是错的。

但是贪心思想一定是对的,每次向前尽量推进一定可以得到最优解。

于是我想起了一道叫做弹飞绵羊的题,感觉这道题可以类比。

码了一会一直WA感觉不太对,发现有一个细节写错了233。

A了之后在csdn上翻了翻题解。

发现都是倍增优化%%%,我被自己的低智商给蠢哭了,是啊连修改操作都没有分块很low啊。

不过还是讲讲如何分块吧。

对于一个数i,我们保存它弹到下一个与它不是同一个块的点所需的最小步数以及那个点的下标。

这样大块直接跳,小块就循环。

代码:

#include<bits/stdc++.h>
#define N 100005
using namespace std;
inline int read(){
	int ans=0;
	char ch=getchar();
	while(!isdigit(ch))ch=getchar();
	while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
	return ans;
}
int l,n,x[N],Q,tim[N],nxt[N],hd,tl,q[N],blo[N],sig;
int main(){
	n=read(),sig=sqrt(n);
	for(int i=1;i<=n;++i)x[i]=read();
	l=read(),Q=read();
	hd=tl=1,q[tl]=n,tim[n]=0,nxt[n]=n+1,blo[n+1]=blo[n]+1;
	for(int i=n-1;i;--i){
		while(x[q[hd]]-x[i]>l)++hd;
		nxt[i]=q[hd],q[++tl]=i;
	}
	for(int i=1;i<=n;++i)blo[i]=(i-1)/sig+1;
	for(int i=n-1;i;--i)
		if(blo[nxt[i]]==blo[i])tim[i]=nxt[i]==n?1:tim[nxt[i]]+1,nxt[i]=nxt[nxt[i]];
		else tim[i]=1;
	while(Q--){
		int a=read(),b=read(),cnt=0;
		if(a>b)a^=b,b^=a,a^=b;
		while(blo[a]<blo[b])cnt+=tim[a],a=nxt[a];
		int sum=0;
		for(int i=a+1;i<=b;++i){
			if(sum+x[i]-x[i-1]>l)sum=0,++cnt;
			sum+=x[i]-x[i-1];
		}
		if(sum)++cnt;
		printf("%d\n",cnt);
	}
	return 0;
}

最新文章

  1. 未封装的js放大镜特效
  2. iptables之LOG目标 被拦截包分析
  3. 如何在MFC中创建非矩形button
  4. 五种I/O 模式,select、epoll方法的理解,BIO、NIO、AIO理解 相关文章
  5. [Ubuntu] Autostart nginx, php-fpm and mysql in Ubuntu14.04
  6. NPN&amp;PNP
  7. 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
  8. POJ 3076 Sudoku DLX精确覆盖
  9. 【bzoj4198】 Noi2015—荷马史诗
  10. Markdown 模板
  11. go: 一个通用log模块的实现
  12. CF1153D Serval and Rooted Tree
  13. python-2018.03.03
  14. Spring引入外部项目Junit 报ClassNotfound问题
  15. python笔记12-字典
  16. XHTML结构化
  17. 查看MySQL的当前日期
  18. 【转载】web网站css,js更新后客户浏览器缓存问题,需要刷新才能正常展示的解决办法
  19. 【新题】ocp 062 2019年考试新题-3
  20. LNMT(Linux+Nginx+MySQL+Tomcat)常见性能参数调优

热门文章

  1. left join 如何增加where条件(在on的后面),这很重要
  2. JPQL和SQL的比较
  3. request error: Connection aborted.&#39;, error(113, &#39;No route to host&#39;)
  4. redis数据迁移
  5. Delphi声明Record变量后直接初始化
  6. 02 Tensorflow的安装配置
  7. kubectl 获取信息
  8. $.ajax dataType设置为json 回调函数不执行
  9. intellij idea 添加模板语句
  10. SpringMVC中在web.xml中添加中文过滤器的写法