首页 > 其他分享 >1. 实战7.4HDU1710-由先序和中序序列产生后序序列

1. 实战7.4HDU1710-由先序和中序序列产生后序序列

时间:2024-05-07 11:55:53浏览次数:45  
标签:lnow HDU1710 hxid int 中序 blst 序列 include alst

希冀平台:
代码:

#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<sstream>
#include<string>
#include<string.h>
#include<iomanip>
#include<stdlib.h>
#include<map>
#include<queue>
#include<cmath>
#include<limits.h>
#include<climits>
#include<fstream>
#include<stack>
#include<set>
typedef long long ll;
using namespace std;
const int N = 2e5 + 10;
int alst[N], blst[N];
void gj(int l, int r,int lnow,int rnow, map<int, int>hxid)
//l:alst的左边界,r:alst的右边界
//lnow:blst的左边界,rnow:blst的右边界,hxid:查找
{
	if (l >= r) { cout << alst[l] << ' '; return; }
	if(lnow < hxid[alst[l]] and hxid[alst[l]]<rnow)//既有左子树又有右子树
	{
		gj(l + 1, l + hxid[alst[l]] - lnow, lnow, hxid[alst[l]] - 1, hxid);
		gj(l + hxid[alst[l]] - lnow + 1, r, hxid[alst[l]] + 1, rnow, hxid);
	}
	else if (hxid[alst[l]] >= rnow)//只有左子树
	{
		gj(l + 1, l + hxid[alst[l]] - lnow, lnow, hxid[alst[l]] - 1, hxid);
	}
	else if (hxid[alst[l]] <= lnow)//只有右子树
	{
		gj(l + hxid[alst[l]] - lnow + 1, r, hxid[alst[l]] + 1, rnow, hxid);
	}
	cout << alst[l] << ' ';
	return;
}
int main()
{
	freopen("in.txt", "r", stdin);
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	int n; cin >> n;
	for (int i = 0; i < n; i++)cin >> alst[i];
	map<int, int>hxid;
	for (int i = 0; i < n; i++) { cin >> blst[i]; hxid[blst[i]] = i; }
	gj(0, n - 1, 0, n - 1, hxid);


	return 0;
}

标签:lnow,HDU1710,hxid,int,中序,blst,序列,include,alst
From: https://www.cnblogs.com/zzzsacmblog/p/18176973

相关文章

  • 循环编码:时间序列中周期性特征的一种常用编码方式
    在深度学习或神经网络中,"循环编码"(CyclicalEncoding)是一种编码技术,其特点是能够捕捉输入或特征中的周期性或循环模式。这种编码方法常用于处理具有周期性行为的任务,比如时间序列预测或理解展示周期性特征的序列。循环编码的核心思想是将数据的周期性特征转化为网络能够理解的形......
  • 力扣1218.最长定差子序列
    题目给你一个整数数组arr和一个整数difference,请你找出并返回arr中最长等差子序列的长度,该子序列中相邻元素之间的差等于difference。​ 子序列是指在不改变其余元素顺序的情况下,通过删除一些元素或不删除任何元素而从arr派生出来的序列。解题思路​ 动态规划1.常......
  • 不同的子序列
    题目来源:力扣115解法思路:使用动态规划定义dp[i][j]为考虑s中[0,i-1]个字符,t中[0,j-1]个字符的匹配个数。那么显然对于某个dp[i][j]而言,从「最后一步」的匹配进行分析,包含两类决策:1、不让s[i]参与匹配,也就是需要让s中[0,i−1]个字符去匹配t中的[0,j-1]字符。此......
  • 基于WOA优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
    1.算法运行效果图预览优化前:    优化后:   2.算法运行软件版本matlab2022a 3.算法理论概述       时间序列回归预测是数据分析的重要领域,旨在根据历史数据预测未来时刻的数值。近年来,深度学习模型如卷积神经网络(ConvolutionalNeuralNetwork,C......
  • 修改序列last_value 字段
    在PostgreSQL中,你不能直接更新序列(如seq_sys_config)的last_value字段,因为序列是一个特殊的系统对象,不允许你像普通表那样直接修改它的列。last_value实际上是序列的一个伪列,表示最后返回的值,但它不是一个可以直接设置的列。如果你想要修改序列的当前值或者重置它,你应该使用......
  • LSTM时间序列预测中的一个常见错误以及如何修正
    当使用LSTM进行时间序列预测时,人们容易陷入一个常见的陷阱。为了解释这个问题,我们需要先回顾一下回归器和预测器是如何工作的。预测算法是这样处理时间序列的:一个回归问题是这样的:因为LSTM是一个回归量,我们需要把时间序列转换成一个回归问题。有许多方法可以做到这一点,一般......
  • Apache Shiro 721反序列化漏洞Padding Oracle Attack
    目录漏洞原理复现修复方式漏洞原理Shiro的RememberMeCookie使用的是AES-128-CBC模式加密。其中128表示密钥长度为128位,CBC代表CipherBlockChaining,这种AES算法模式的主要特点是将明文分成固定长度的块,然后利用前一个块的密文对当前块的明文进行加密处理。这种模式的加......
  • 基于WOA优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
    1.算法运行效果图预览woa优化前      woa优化后    2.算法运行软件版本matlab2022a 3.算法理论概述      时间序列回归预测是数据分析的重要领域,旨在根据历史数据预测未来时刻的数值。近年来,深度学习模型如卷积神经网络(ConvolutionalNeur......
  • 105. 106. 从中序与后序遍历序列构造二叉树
    https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/思路和106.从中序与后序遍历序列构造二叉树相同/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoder......
  • 106. 从中序与后序遍历序列构造二叉树(leetcode)
    https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/要点是明白中序和后序如何构造二叉树的,并且需要理清当前递归函数的语义,不要一开始就陷入细节,而是思考整棵树与其左右子树的关系,语义是:即构造当前节点,给当前节点左右子树赋值,明......