
算法竞赛进阶指南
文章平均质量分 68
记录《算法竞赛进阶指南》中某些习题
指间理想
这里没有简介~
展开
-
二叉堆及其基本操作
二叉堆基本操作及其实现:用数组实现,1为根插入操作:在数组的末尾插入数据,并从该节点开始往根节点调整直至满足大/小根堆的性质void insert(int val,int pos){ //插入操作heap[pos]=val;up_adjust(pos);}删除操作:1.将堆顶元素删除:交换heap[1],heap[n](最后一个元素),然后移除最后一个元素(可以是将n减一),最后向下调整堆。void pop(){heap[1]=heap[n- -];down_adjust(1);}原创 2021-09-05 16:35:36 · 240 阅读 · 0 评论 -
字符串的最长回文子串
求解字符串的最长回文子串(Onlogn和On做法)第一种做法是字符串哈希加上二分答案,第二种做法是manacher算法方法一:通过保存正序哈希值和逆序的哈希值我们可以遍历整个字符串,当以字符i为中心时,二分回文串的长度,最终得到最大值,为了避免对讨论奇数、偶数长度的回文串的讨论,我们可以在字符之间添加一个特殊符号,如#,让所有情况变为奇数,便于处理。下面给出算法竞赛进阶指南的一道例题,AcWing地址:https://www.acwing.com/problem/content/141/如果一个字符原创 2021-08-24 14:53:07 · 599 阅读 · 0 评论 -
(前缀表达式)波兰式、(后缀表达式)逆波兰式以及中缀表达式
表达式的计算方式以及相互转换首先介绍我们熟知的一种表达式:中缀表达式中缀表达式就是我们日常生活中所能见到的一般表达式,例如:2+3*(4+5),根据运算符优先级,我们很容易知道先计算括号内的表达式,然后先乘除再加减,从左往右进行迭代计算最终获取正确结果,但对于计算机来说这并不容易,顺序执行时计算机不能预测我们的表达式后面部分的运算符是否会优先于当前,故我们利用计算机计算中缀表达式的值时需要合理进行编码已得到正确的结果。正因为中缀表达式不方便顺序进行运算,因此引入前缀表达式(波兰式)和后缀表达式(逆波兰原创 2021-08-13 23:30:28 · 1169 阅读 · 0 评论 -
AcWing 115. 给树染色
AcWing 115. 给树染色(https://www.acwing.com/problem/content/description/117/)一颗树有 n 个节点,这些节点被标号为:1,2,3…n,每个节点 i 都有一个权值 A[i]。现在要把这棵树的节点全部染色,染色的规则是:根节点 R 可以随时被染色;对于其他节点,在被染色之前它的父亲节点必须已经染上了色。每次染色的代价为 T×A[i],其中 T 代表当前是第几次染色。求把这棵树染色的最小总代价。输入格式第一行包含两个整数 n 和 R原创 2021-08-03 20:37:49 · 362 阅读 · 0 评论 -
动态中位数
106. 动态中位数(https://www.acwing.com/problem/content/108/)依次读入一个整数序列,每当已经读入的整数个数为奇数时,输出已读入的整数构成的序列的中位数。输入格式第一行输入一个整数 P,代表后面数据集的个数,接下来若干行输入各个数据集。每个数据集的第一行首先输入一个代表数据集的编号的整数。然后输入一个整数 M,代表数据集中包含数据的个数,M 一定为奇数,数据之间用空格隔开。数据集的剩余行由数据集的数据构成,每行包含 10 个数据,最后一行数据量可能少原创 2021-07-31 10:23:56 · 316 阅读 · 0 评论 -
七夕祭(综合运用)
七夕祭(AcWing地址:https://www.acwing.com/problem/content/description/107/)七夕节因牛郎织女的传说而被扣上了「情人节」的帽子。于是 TYVJ 今年举办了一次线下七夕祭。Vani 同学今年成功邀请到了 cl 同学陪他来共度七夕,于是他们决定去 TYVJ 七夕祭游玩。TYVJ 七夕祭和 11 区的夏祭的形式很像。矩形的祭典会场由 N 排 M 列共计 N×M 个摊点组成。虽然摊点种类繁多,不过 cl 只对其中的一部分摊点感兴趣,比如章鱼烧、原创 2021-07-30 18:57:38 · 613 阅读 · 0 评论