logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

合并石子(c++)

通过观察会发现每次合并都是把两个相邻的连续区间进行合并,比如第一次可以把 [1,1] 和 [2,2] 合并成 [1,2][1,2]。如果之前把 [1,2] 和 [3,4] 合并出来,接着可以把这两段再合并成 [1,4]。对于当前的最后一次合并操作,是把某两段合并成了 [i,j],那么可以枚举两段中间的分界点 k,将 [i,j] 拆成 [i,k] 和 [k+1,j],表示是把这样的两段合并成一段的。

文章图片
#算法#图论#动态规划 +1
洛谷P1040 NOIP2003提高组---加分二叉树

设一个 n 个节点的二叉树 tree 的中序遍历为 (1,2,3,⋯,n),其中数字 1,2,3,⋯,n 为节点编号。试求一棵符合中序遍历为 (1,2,3,⋯,n)且加分最高的二叉树 tree。subtree 的左子树的加分 × subtree 的右子树的加分 + subtree 的根的分数。第 1 行:一个整数,为最高加分(结果不会超过 4,000,000,000)。第 2 行:n 个用空格隔开

文章图片
#算法#动态规划#数据结构 +2
c++ [NOIP2008 提高组] 笨小猴 T1

笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!一个单词,其中只可能出现小写字母,并且长度小于 100。共两行,第一行是一个字符串,假设输入的的单词是。是单词中出现次数最少的字母的出现次数,如果。是单词中出现次数最多的字母的出现次数,是一个质数,那么笨小猴就认为这是个。,这样的单词很可能就是正确的答案。第二行是一

文章图片
#c++#算法#数据结构
拓扑排序(c++)

观察上图可以发现,有一条 1→2 的有向边,表示 2 进入队列之前需要先让 1 进入队列。拓扑排序就是依照这个原理进行的,但是拓扑排序将这个判断过程简化为了对入度的判断。通过只判断入度,可以在保证正确性的情况下简化算法流程。通过上面的判断方式,我们发现可以根据一个点的入边来判断这个点进入队列前需要哪些点已经进入队列。这一名词,实际上拓扑序的定义与题目要求的排队序列定义相同,就是指满足该图要求的一种

文章图片
#算法#图论#动态规划 +2
P4956 [COCI2017-2018#6] Davor c++

在征服南极之后,Davor 开始了一项新的挑战。下一步是在西伯利亚、格林兰、挪威的北极圈远征。他将在 2018 年 12 月 31 日开始出发,在这之前需要一共筹集 n 元钱。他打算在每个星期一筹集 x 元,星期二筹集 x+k 元,……,星期日筹集 x+6k 元,并在 52 个星期内筹集完。其中 x,k 为正整数,并且满足 1≤x≤100。现在请你帮忙计算 x,k 为多少时,能刚好筹集 n 元。如

文章图片
#c++#算法#数据结构
c++ [NOIP2008 提高组] 笨小猴 T1

笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!一个单词,其中只可能出现小写字母,并且长度小于 100。共两行,第一行是一个字符串,假设输入的的单词是。是单词中出现次数最少的字母的出现次数,如果。是单词中出现次数最多的字母的出现次数,是一个质数,那么笨小猴就认为这是个。,这样的单词很可能就是正确的答案。第二行是一

文章图片
#c++#算法#数据结构
多重背包(c++)

这一份代码和 01 背包相比,不再有 else 部分了,因为,k = 0 的时候 dp[i][j] = max(dp[i - 1][j], dp[i][j]) ,相当于 01 背包的 else 部分。我们也可以在转移的过程中枚举 k,代表第 i 个物品选取的数量,和 01 背包的思想一样,有如下转移。我们可以把每个种类的 ni​ 个物品,都当成 01 背包里的不同种物品,只是恰巧体积和价值相同。与

文章图片
#算法#动态规划#c++
完全背包问题(c++)

虽然物品个数是无限的,但是实际上,由于背包容量有上限,每个物品最多选取的个数也是有限制的,这样可以转换成多重背包问题,进而可以转换成 01 背包问题。现有容量为 V 的背包,请你放入若干物品,使总体积不超过 V,并且总价值尽可能大。当前有 N 种物品,第 i 种物品的体积是 ci​,价值是 wi​。每种物品的数量都是无限的,可以选择任意数量放入背包。可以用多重背包的思想来解决完全背包。

文章图片
#c++#算法#动态规划
【NOIP2014 普及组】T2:比例简化 c++

在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果。例如,对某一观点表示支持的有 1498 人,反对的有 902 人,那么赞同与反对的比例可以简单的记为1498:902。不过,如果把调查结果就以这种方式呈现出来,大多数人肯定不会满意。因为这个比例的数值太大,难以一眼看出它们的关系。对于上面这个例子,如果把比例记为 5:3,虽然与真实结果有一定的误差,但依然能够较为准确地反映调查结果,

文章图片
#c++#算法#数据结构
快速排序(c++)

快速排序是目前应用最广泛的排序算法之一,"它的基本思想与归并排序类似,也是基于分治的。每次从待排序区间选取一个元素(我们在后面的课程中都是选取第一个)作为基准,所有比基准小的元素都在基准的左边,而所有比基准大的元素都在基准的右边。之后分别对基准记录的左边和右边两个区间递归地进行快速排序上述代码中,如果当前区间只有一个元素或为空,就直接返回。p1 和 p2 是两个用于扫描的指针,分别从左往右和从右往

文章图片
#算法#排序算法#数据结构
    共 11 条
  • 1
  • 2
  • 请选择