首页 > 其他分享 >线段树什么的最讨厌了

线段树什么的最讨厌了

时间:2022-10-03 13:44:34浏览次数:44  
标签:2LL return 线段 long solve 讨厌 区间 什么

image

发现如果正着从一颗线段树搜到这一个区间,很难搜。所以考虑从一个区间搜出一颗线段树。

对于一个区间 \([l,r]\),他的父亲区间只可能是 \([2*l-r-2,r],[2*l-r-1,r],[l,2*r-l],[l,2*r-l-1]\) 四种情况。

发现无论往哪一种方向走,\(\frac{l}{r-l+1}\) 的值都会除以2.那么这么做的复杂度为 \(4^{log_2\frac{l}{r-l+1}}\)。但是我们可以优先 \([2*l-r-2,r],[2*l-r-1,r]\) 搜索,这两种很明显会更加接近答案。加上一些卡常,就可以通过此题。

#include<bits/stdc++.h>
using namespace std;
int t,l,r,lim,ret;
void solve(long long x,long long y)
{
	if(x>y)
		return;
	if(!x)
	{
		ret=y;
		return;
	}
//	printf("%d %d\n",x,y);
	if(2LL*x-y>=2)
		solve(2LL*x-y-2,y);	
	if(2LL*x-y>=1)
		solve(2LL*x-y-1,y);
	if(2LL*y-x<ret&&2LL*y-x<=lim)
		solve(x,2LL*y-x);
	if(2LL*y-x+1<ret&&2LL*y-x+1<=lim)
		solve(x,2LL*y-x+1);
}
int main() 
		solve(l,r);
		printf(ret==2.1e9? "-1\n":"%d\n",ret);
	}
}

求复杂度证明。

标签:2LL,return,线段,long,solve,讨厌,区间,什么
From: https://www.cnblogs.com/mekoszc/p/16750415.html

相关文章

  • 写代码为了什么?
    写代码讲真的没啥意思,坚持学习和写代码只是因为写代码能给我带来三两碎银,这三两碎银能解决我生活中99%的烦恼。就是这么简单而已。你以为我不想去看阿拉斯加的鲤鱼跃出水......
  • 序号大小级别是什么
    第一层为汉字数字加顿号,例如:“一、”“二、”“三、”; 第二层为括号中包含汉字数字,例如:“(一)”“(二)”“(三)”; 第三层为阿拉伯数字加下脚点,例如:“1.”“2.”“3.”; 第四......
  • C# 内存泄漏之 Internal 关键词代表什么?
    一:背景1.背景前段时间有位朋友咨询说他的程序出现了非托管内存泄漏,说里面有很多的HEAP_BLOCK都被标记成了Internal状态,而且size都很大,让我帮忙看下怎么回事?比如......
  • 写过自定义指令吗,原理是什么?
    背景看了一些自定义指令的文章,但是探究其原理的文章却不多见,所以我决定水一篇。如何自定义指令?其实关于这个问题官方文档上已经有了很好的示例的,我们先来温故一下。除......
  • react的jsx和React.createElement是什么关系?面试常问
    1、JSX在React17之前,我们写React代码的时候都会去引入React,并且自己的代码中没有用到,这是为什么呢?这是因为我们的JSX代码会被Babel编译为React.createElement,我们来......
  • 02-分布式会话[为什么使用无状态会话, 单Tomcat会话...]
    为何使用无状态会话有状态会话都是放在服务器,一旦用户会话多,那么内存就会出现瓶颈,而无状态会话可以采用介质,前端可以使用Cookie(app可以使用缓存)保存用户ID或者......
  • 什么是补码
    什么是补码众所周知,符号位不变,负数原码数值取反后\(+1\)即可得到补码,补码可以用加法来代替减法,刚学的小朋友可能完全不知所然,补码是个完全模糊的概念。我们先用十进制来......
  • 省赛线段树存档
    #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;intread(){intx;scanf("%d",&x);returnx;}llmod=998244353ll,ans;llinv[100010],fa......
  • java中参数里面三个点代表什么呢?
    转自:​​http://www.java265.com/JavaCourse/202203/2426.html​​可变参数:   在计算机程序设计,一个可变参数函数是指一个函数拥有不定引数,即是它接受一个可变数目的......
  • 企业数据填报系统能解决什么样的问题?_光点科技
    你是否遇到过以下问题:企业数据填报量大,重复性工作多?公司部门数据分散、残缺不全,没有数据聚合应用?数据核验工具缺失,人工校验投入大?当你每年填写大批的报表时,你是否在想,系统明......