(原创)线索二叉树那点小破事
线索二叉树 二叉树的基本定义结构我们都很熟悉,节点数据加上孩纸指针,左孩子指娘家,右孩子指婆家,我们来看这个例子: 我们会发现,有些孩子并没有地方可以去,例子中的树一共十个结点,十一个空闲指针,由此引出我们对于空闲指针的计算公式:一个有 n 个结点的二叉树有 2n 个指针域,而 n 个结点会产生 n-1 个分支,每个分支对应其指向孩子的指针域,所以空闲指针数: 2n - (n-1) = n+1 ,这么多指针域我们怎样规划能避免这些指针便宜null呢? 大佬们提出了这样一个用途,中序遍历这棵树我
javaWeb_JDBC_dao模式设计
JDBC_DAO模式设计 1.什么是DAO? DAO:data access Object,表示数据访问对象,访问数据信息的类,其中包含着对这一个对象在数据库中存储的时候的CRUD的操作。而不包含任何 业务逻辑相关的信息。Dao可以被子类继承或者是使用。 2.使用Dao模式的好处 在编写了dao模式以后,就使得代码变得模块化,更有利于代码的维护和升级。 3.如何编写dao模式的代码(即编写dao模式的可能存在方法) //insert,update,delete操作都可以包含在其中 void u
arch Linux(二)
配置你的基本系统 下列是基于该视频4:40s的流水~ 切换到普通用户: [root@eric-laptop ~]# su eric 查看系统信息: [eric@eric-laptop root]$ neofetch
-` eric@eric-laptop
.o+` ----------------
`ooo/
ThinkInJava之内部类
一:内部类概述 将一个类的定义放在另一个类的内部,这就是内部类。内部类是Java一种非常有用的特征,因为他允许你把一些逻辑相关的数据组织在一起,并控制它的可见性。 二:内部类的创建 我们都知道类的创建语法(简略)如下 [public |...] class 类名 [implements|....]{
定义属性(注意不同的修饰符(如public ....))
定义方法语法(构造方法或普通方法)
} 而内部类的创建就是把该类放在
训练指南 UVALive - 3989(稳定婚姻问题)
ayout: post title: 训练指南 UVALive - 3989(稳定婚姻问题) author: "luowentaoaa" catalog: true mathjax: true tags: - 二分图匹配 - 图论 - 训练指南 Ladies' Choice UVALive - 3989 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353;
const
CF1111E Tree 树链剖分,DP
CF1111E Tree 过年了,洛咕还没爬这次的题,先放个CF的链接吧。 对于每个询问点\(x\),设它的祖先即不能和它放在同一个集合中的点的个数为\(f[x]\),设\(dp[i][j]\)表示前\(i\)个询问点放在\(j\)个非空集合中的方案数,注意这里“前\(i\)个”的意义,这表示会对第\(i\)个点造成影响的点都已被考虑过了,转移就是\(dp[i][j] = dp[i - 1][j] * (i - f[j]) + dp[i -1][j - 1]\)。 下面的问题就是怎么处理出\(
Miller_Rabin整理笔记
目录 问题 别的 正事 代码 问题 一个数到底是不是素数 别的 首先列一下我们可以求素数的东西 根号暴力求 \(O(nloglogn)\)的埃氏筛 \(O(n)\)的欧拉筛 还有我们要学习的Miller_Rabin算法 对了,还有神奇的6倍法(也许叫这个吧) bool pd(int x) {
if(x==2||x==3) return 1;
if(x==1||x%6!=1&&x%6!=5) return 0;
for(int i=5;i*i<=x;i+=6)
Luogu-P4289-[HAOI2008]移动玩具
【题面】 题目描述: 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初始的玩具状态移动到某人心中的目标状态。 输入输出格式: 输入格式: 前4行表示玩具的初始状态,每行4个数字1或0,1表示方格中放置了玩具,0表示没有放置玩具。接着是一个空行。接下来4行表示玩具的目标状态,每行4个数字1或0,意义同上。 输出格式: 一个整数,所需要的最少移动次数。 输入输出样
[codeforces]Round #537 (Div. 2)E. Tree
题解: q次查询每次查询k个点 k的总和不超过1e5 那就->虚树 这个题分为两部分 前面先对每次查询的点建虚树 其次计数 对于新树上的每个关键点(查询点) 他能影响的m的范围 必然大于以r为根的祖先节点的个数 然后我们单独考虑每个节点的贡献为 当前集合个数减去其祖先节点的个数 然后我们考虑把每个点按照dfs序的下标考虑贡献 转移分为两部分 1.当前元素加入直接构成一个新集合 2,当前元素加入可以加入到 m(当前集合个数)-祖先节点个数 #include <bits/s
数论入门2——gcd,lcm,exGCD,欧拉定理,乘法逆元,(ex)CRT,(ex)BSGS,(ex)Lucas,原根,Miller-Rabin,Pollard-Rho
数论入门2 另一种类型的数论... GCD,LCM 定义\(gcd(a,b)\)为a和b的最大公约数,\(lcm(a,b)\)为a和b的最小公倍数,则有: 将a和b分解质因数为\(a=p1^{a1}p2^{a2}p3^{a3}...pn^{an},b=p1^{b1}p2^{b2}p3^{b3}...pn^{bn}\),那么\(gcd(a,b)=\prod_{i=1}^{n}pi^{min(ai,bi)},lcm(a,b)=\prod_{i=1}^{n}pi^{max(ai,bi)}\)(0和任
二分之万无一失的模板~~~
My first blog~~~. 这里给个二分的模板 1 //二分模板
2 l = 0;r += 10;//保证所有元素都有可以被遍历的机会
3 while(l + 1 < r)
4 {
5 int mid = l + r >> 1;
6 if(check(mid)) l = mid;
7 else r = mid;
8 }
cf581F 依赖背包+临时数组 好题
这题得加个临时数组才能做。。 /*
给定一棵树,树节点可以染黑白,要求叶子节点黑白平分
称连接黑白点的边为杂边,求使得杂边最少的染色方
那么设dp[i][j][0|1]表示i子树中有j个叶子节点,i染黑或白
那么其实是依赖背包,即枚举每个节点的字数v,进行分组即可
给dp初始化0x3f
边际条件:如果i是叶子节点,那么dp[i][i][0|1]=0;
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 5005
st
【xsy1098】第k小 可持久化trie
题目大意:你要维护一个长度为$n$的序列,资瓷对整个序列$xor,and,or$一个数,以及区间第k小查询。 数据范围:$n≤50000$,所有数字$<2^{31}$。 此题甚妙 我们不难想出没有位运算的区间第k大查询,直接可持久化trie就可以了。 考虑此题只有xor操作。 我们记一个$last$表示之前所有异或操作的数的异或和。 查询区间第$k$小时,随便查询下就行了(在比较时假装交换$trie$的左右子树) 考虑存在$or$和$and$操作,我们设对序列操作的数字为$x$,设$vis[k
What is Zeebe?
转自:https://zeebe.io/what-is-zeebe/ Zeebe is a workflow engine for microservices orchestration. This write-up will help you understand exactly what Zeebe is and how it might be relevant to you. We’ll start with a short introduction of Zeebe and the p
今日推荐
周排行