爆栈的处理方法

爆栈指递归中,存储的信息量大于系统栈的内存。

信息量包括元素编号,每一层中开的变量。

和递归的层数正相关。

(虽然noip一般开栈)

1.手写栈

while(top){

  int x=sta[top];

  for(each son)

  if(has son){

    //blablabla

    sta[++top]=son;

    hd[x]=e[i].nxt;

  }

  else{

    //blablabla

    sta[top--]=0;

  }

}

可以用一个弧优化,使得每次儿子回溯后,父亲往下的边的访问直接继续。

这样复杂度就对了。

如果son回溯后,在到下一个son之前,还要做一些事情,那就用个pair,结构体什么的,讨论一下情况即可。

 

 

2.bfs序求dfs序

用bfs求dfs序(先序遍历序)

相同点:

先出来father的编号再出来son的编号。根节点都是1号。

区别:子树连续访问pk儿子连续访问。

联系:就差一个size

bfs求bfs序,再倒序记录每个点的size

然后,遍历bfs序。

这时x的fa一定已经求出了dfs序。

如果上一个点的fa和这个点的fa不同,那么x一定是x的fa的第一个儿子,到了fa之后就先访问x。dfn[x]=dfn[fa[x]]+1

如果上一个点的fa和这个点的fa相同,那么x一定是上一个点的后兄弟。dfn[x]=dfn[las]+size[las]

理解就是,dfs时会先遍历las的整个子树。并且下一个就一定是x了。

 

3.本地手动开栈:

#pragma GCC ("-W1,--stack=128000000)手动开栈。

 

转载于:https://www.cnblogs.com/Miracevin/p/9828971.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目面试题

项目面试题 1.描述最熟悉的或者(最近)的一个项目 ? 目的:检测技术和项目的熟悉程度工作职责 回答:项目名称,项目的甲方,背景,实现的目的和意义,该项目主要是为了解决什…

MySQL定时备份(全量备份+增量备份)

MySQL 定时备份 参考 zone7_ 的 实战-MySQL定时备份系列文章 参考 zmcyu 的 mysql数据库的完整备份、差异备份、增量备份 更多binlog的学习参考马丁传奇的 MySQL的binlog日志,这篇文章写得认真详细,如果看的认真的话,肯定能学的很好的。 如果…

java 接口可以多继承

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 接口是常量值和方法定义的集合。接口是一种特殊的抽象类。 java类是单继承的。classB Extends classA java接口可以多继承。Interface…

C语言struct关键字详解—结构体

struct 是个神奇的关键字,它将一些相关联的数据打包成一个整体,方便使用。在网络协议、通信控制、嵌入式系统、驱动开发等地方,我们经常要传送的不是简单的字节流(char 型数组),而是多种数据组合起来的一个…

JDK1.8使用Dubbo时需注意

2019独角兽企业重金招聘Python工程师标准>>> Dubbo自带的很多包都比较旧了,其中的javassist在JDK1.8上运行会报错 而且错误通常比较诡异,javassist是编辑和创建Java字节码的类库,常见的错误会从spring中报出 解决办法:…

Java 11 已发布,String 还能这样玩!

在文章《Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码》中,我有介绍到 Java 11 的八个新特性,其中关于 String 加强部分,我觉得有点意思,这里单独再拉出来讲。 Java 11 增加了一系列的字符串处理方法&…

Redis1 晨考题

Redis1 晨考题 1.Redis 是什么 ? redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 的内存数据库,并提供多种语言的 API。 2.NOSQL 是什么 ?出现的目的和意义是什么 ? NoSQL 泛指…

C语言void关键字

void 有什么好讲的呢?如果你认为没有,那就没有;但如果你认为有,那就真的有。有点像“色即是空,空即是色”。一、void a? void 的字面意思是“空类型”,void *则为“空类型指针”,vo…

深入了解RabbitMQ工作原理及简单使用

深入了解RabbitMQ工作原理及简单使用 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建深入了解RabbitMQ工作原理及简单使用RabbitMQ交换器Exchange介绍与实践RabbitMQ事务和Confirm发送方消息确认——深入解读使用Docker部署RabbitMQ集群你不知道的RabbitMQ集群架构全解RabbitM…

使用el-checkbox实现全选,点击失效没有反应

最近在公司接收到了一个需求,给收藏夹的书籍添加批量、全选删除实现思路:点击全选改变item的checked,改变item的checked,重新便利一下所有item的checked来改变全选的selectAll1)该组件基本功能已经实现,che…

Spring3.2新注解@ControllerAdvice

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 ControllerAdvice,是spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强。让我们先看看ControllerAdv…

Mysql1 晨考题

Mysql1 晨考题 1.描述主键、外键、候选主键、超键分别是什么 ? (1)主键:数据库表中对存储数据对象给予唯一完整标识的数据列或属性的组合。一个数据列只能有一个主 键,且主键的取值不能缺失,即不能为空值…

C语言关键字

C语言do、while、for关键字—循环 C 语言中循环语句有三种:while 循环、do-while 循环、for 循环。while 循环:先判断while 后面括号里的值,如果为真则执行其后面的代码;否则不执行。while(1)表示死循环。…

C语言字符篇(五)内存函数

memcpy不可以把目的地址写成本身但是memmove可以,因为它是先保存到临时空间 #include <string.h> void *memcpy(void *dest, const void *src, size_t n);将内存src拷贝n个字符到内存destvoid *memmove(void *dest, const void *src, size_t n);将内存src的前n个数据拷贝…

GMQ交易平台大力探索区块链技术,进一步推动产业繁荣

近年来&#xff0c;区块链技术作为金融科技的中坚力量&#xff0c;受到了产业界的热切关注&#xff0c;其实验开展和应用研发正在如火如荼的进行。 在此背景下&#xff0c;各地涌现出一大批优秀的企业投入到区块链产业中&#xff0c;各类企业投融 资活动十分活跃&#xff0c;充…

java 笔试题

JAVA-2003笔试题 一、选择题&#xff08;每小题2&#xff0c;共10分&#xff09; 下列语句序列执行后&#xff0c;m 的值是&#xff08; C &#xff09; int a10, b3, m5; if( ab ) ma; else ma*m; A.15 B.50 C.55 D.5若已定义byte[]x{11,22,33,-66}其中0≤k≤3&#xff0c;则…

objectdatasouce的温故

在做ecxel的时候&#xff0c;需要前台做一个联动的效果。 记录一下这个数据源的用法&#xff0c;大学时候用的&#xff0c;忘得差不多了 首先就是往页面拖拽一个objectdatasouce的控件 然后配置数据源&#xff1a; 选择业务对象(其实就是选择你要用的哪个类&#xff0c;如果下拉…

都会五星回评,欢迎留下地址-博客之星

欢迎五星回评地址https://bbs.csdn.net/topics/603961857

jQuery核心

jQuery(selector) jQuery 的核心功能都是通过这个函数实现的。 jQuery中的一切都基于这个函数&#xff0c;或者说都是在以某种方式使用这个函数。这个函数最基本的用法就是向它传递一个表达式&#xff08;通常由 CSS 选择器组成&#xff09;&#xff0c;然后根据这个表达式来查…

Feign api调用方式

Feign使用简介 基本用法 基本的使用如下所示&#xff0c;一个对于canonical Retrofit sample的适配。 interface GitHub {// RequestLine注解声明请求方法和请求地址,可以允许有查询参数RequestLine("GET /repos/{owner}/{repo}/contributors")List<Contributor&g…