数据结构和算法
文章平均质量分 60
delicious__z
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #898 (Div. 4)
给出一个正整数数组,如果在两边加一个高度为h的边界,那么它就可以容纳一定体积的水。问最多有体积x的水,要装满,h最少为多少。这题很有意思,给出一个无向图,A和B所在的点,A想要抓B,B在A行动前马上可以知道然后逃跑。当时做的时候想的是如果A和B都在环里面,B就可以一直不被抓到;给出一个01串和一个数字k,你每次最多可以选择连续的k个元素让它们全部变成0,问最少需要多少次操作。注意到第一种操作B会能左边连续的A消掉,第二种操作B能把右边连续的A消掉。首先庆祝自己上了绿名🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄。原创 2023-09-24 10:54:06 · 636 阅读 · 0 评论 -
codeforces补题
要使得这个式子最大我们首先得选出最优ai和aj。容易发现如果ai和aj相同的话是最好的,如果没有相同的那么就相同的二进制位越多越好(低位优先。当时不会求ai和aj,看了题解之后发现是使用01Tire树求出来的。对着01Trie树模板改一改即可。an,和一个参数k,求i,j,x使得x原创 2023-08-23 23:51:16 · 185 阅读 · 0 评论 -
PAT---A1129 Recommendation System (25分)
题意输入n个用户搜索的商品,每输入一个商品,输出推荐的不超过k个商品,推荐的算法是用户主动搜索次数多的排在前面,如果搜索次数相同则按照商品的id 升序排列。思路明显需要动态排序,数据结构用set,输入一个就重新将商品插入到set中,达到动态排序的效果。Sample Input:12 33 5 7 5 5 3 2 1 8 3 8 12Sample Output:5: 37: 3 55: 3 5 75: 5 3 73: 5 3 72: 5 3 71: 5 3 28: 5 3 1原创 2020-07-19 14:30:05 · 116 阅读 · 0 评论 -
PAT---A1139 First Contact (30分)
题意A暗恋B,让朋友C传话给B的朋友D,D再传话给B。A.gender == C.genderB.gendre == D.genderC是A的朋友,不能是B本身D是B的朋友,不能是A本身这样A暗恋B,需要两个朋友才能传话给B,找出所有对这样的朋友,从小到大输出。思路很明显遍历一下就能得出答案,注意到从小到大输出,map有排序功能,所以就用map。注意输入要用string 输入来判断性别,否则输入0无法判断性别。Sample Input:10 18-2001 1001-2002 -原创 2020-07-18 20:58:17 · 239 阅读 · 0 评论 -
二叉树常见问题
前言最近在复习数据结构,将一些习题以代码的形式记录,作为笔记。不使用STL,算法题中假设栈、队列的maxSize足够大。会持续更新。求非空二叉树的宽度(最多节点那层的节点数)利用队列进行层次遍历,同时统计每一层的节点数 int solve(Node *node){ int ans_cnt = 0, cnt = 0; Node *last = node; // 定义last指向当前层的最右边那个节点 Node* q[maxSize]; in原创 2020-05-24 22:49:19 · 752 阅读 · 0 评论 -
二叉树寻找节点的最近公共祖先
问题寻找p和q的最近公共祖先思路用栈对二叉树后序遍历,遍历时栈有如下特性:栈中的节点都是当前遍历节点的祖先,(最近的祖先是最近被弹出的节点)。基于这个性质,在遍历的时候如果p和q都已经遍历过了,则她们的共同祖先就是最近被弹出栈的那个节点。struct Node { int data{0}; Node *l{nullptr}; Node *r{nullptr};} Node* solve(Node *root,Node *p1,Node *p2){原创 2020-05-24 20:17:52 · 714 阅读 · 0 评论 -
二叉树寻找节点x的所有祖先
现在需要寻找链式二叉树节点元素为x的所有祖先并输出。思路利用栈进行后序遍历,设立两个栈in 和 out,in用来遍历二叉树,out用来存储输出的信息,仅仅是为了将遍历的节点存起来最后一起输出。利用栈进行后序遍历的步骤如下:节点p从根节点开始一直往右下走并进栈,直到null若p为null,则令p = stack.top().left,栈顶的那个元素已经没用了,所以并弹出一个元素。若p为null而且栈为空,说明遍历完成。struct Node { int data{0}; N原创 2020-05-24 19:53:35 · 4459 阅读 · 6 评论