上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 67 下一页
摘要: P1631 序列合并是$M=2$时的简化问题,回到本题,我们可以先求出前$2$序列中任取一个数相加构成的前$N$小和,把这$N$个和作为一个序列,再与第$3$个序列求新的前$N$小和,以此类推,最终得到$M$个序列任取一个数相加构成的前$N$小和。整个算法的时间复杂度为$O(MNlogN)$ 注意点 阅读全文
posted @ 2021-02-26 22:14 Dazzling! 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 首先,把A和B两个序列分别从小到大排序,变成两个有序队列。这样,从A和B中各任取一个数相加得到N2个和,可以把这些和看成形成了n个有序表/队列: A[1]+B[1] ⇐ A[1]+B[2] ⇐ … ⇐ A[1]+B[N] A[2]+B[1] ⇐ A[2]+B[2] ⇐ … ⇐ A[2]+B[N] … 阅读全文
posted @ 2021-02-26 21:39 Dazzling! 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 题意 给定一棵二叉树,判断其是否为完全二叉树。如果是的话,同时输出该完全二叉树的最后一个结点编号;否则输出二叉树的根结点编号。 我的思路: 先判断最后一层上面的层是否是满的,最后判断最后一层的结点是否都在最左边。 注意点 一定要注意节点编号可能是两位数,不能用char类型存储。 const int 阅读全文
posted @ 2021-02-26 09:31 Dazzling! 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 水~。 \(N \le 10\),结点下标的范围为$0 \sim 9$,所以直接和字符'0'相减即可。 const int N=35; PII tree[N]; int fa[N]; vector<int> layer,in; int n; void bfs(int root) { queue<in 阅读全文
posted @ 2021-02-25 21:12 Dazzling! 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 参考$\color$代码,虽然自己思路大体上相同,但离代码实现还差一步,菜的安详>_<。 思路 题意其实就是下面的伪代码: void inorder(int root) { if(root == 0) return; push(root); inorder(tree[root].lchild); p 阅读全文
posted @ 2021-02-25 19:55 Dazzling! 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 在二叉搜索树中,中序遍历的结果总是所有元素的升序排列(如上表中标红的一行所示);换句话说,中序遍历结果是不能帮助我们判断两个序列是否对应同一棵二叉搜索树的。这是其他几种遍历无法做到的。 而层序、先序、后序遍历都可以用来判断两个给定序列是否为同一棵二叉搜索树。 const int N=110; str 阅读全文
posted @ 2021-02-25 19:11 Dazzling! 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 二叉排序树裸题。 牛客网补充说明:输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。 所以建立的二叉排序树中不包含重复元素。 const int N=110; int a[N]; PII tree[N]; int n; void insert(int &root,int idx) { 阅读全文
posted @ 2021-02-25 18:58 Dazzling! 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 并查集裸题,注意$0$的特判,此时没有朋友关系,房间里只能留下一个人,其余$10000000-1$都要移出去。 const int N=1e7+10; int p[N]; int cnt[N]; int n,m; int find(int x) { if(x != p[x]) p[x]=find(p 阅读全文
posted @ 2021-02-25 13:11 Dazzling! 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 题目关键就是要保证两个点 这是一张无环图 这张图是一张连通图 这就变成一个并查集的模板题,每次加进来一条边只要判断两个顶点的根节点是否相同,如果相同说明遇到了环。然后判断这张图是连通图块数是否为1。 const int N=1010; int p[N]; int n,m; int find(int 阅读全文
posted @ 2021-02-25 12:59 Dazzling! 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 读懂题后发现,这不就三维$BFS$裸题吗,$30$分的裸题可还行。 输入数据时是按多个二维矩阵的方式读入的,因此3层for循环中的第一层需要遍历矩阵编号,第二、三层才是单个矩阵的数据读入。 const int N=1300,M=130; struct Node { int x,y,z; }; boo 阅读全文
posted @ 2021-02-25 10:33 Dazzling! 阅读(34) 评论(0) 推荐(0) 编辑
上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 67 下一页