[NOIP2018PJ]对称二叉树 这个题正常人看到题面难道不是哈希? 乱写了个树哈希... #include<bits/stdc++.h> using namespace std; const int _=1e6+5,p=998244353; int re(){ int x=0,w=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();} while(ch>='0'&&
题目大意:问一棵有根带权二叉树中最大的对称二叉树子树,对称二叉树为需满足将这棵树所有节点的左右子树交换,新树和原树对应位置的结构相同且点权相等. 题解:在对称二叉树中,对于深度相同的两个节点$u,v$,必定有$ls(u)=rs(v)$,$rs(u=ls(v)$,并且$val(u)=val(v)$,对每个点跑一遍深搜就可以了.发现跑一个点最多遍历它子树中较少的一棵子树.复杂度为$O(n\log_2n)$ 卡点:无 C++ Code: #include <iostream> #define max