算法题
文章平均质量分 67
gtyinstinct
这个作者很懒,什么都没留下…
展开
-
LeetCode 2338 统计理想数组的数目
LeetCode 2338 统计理想数组的数目原创 2022-07-21 11:22:40 · 167 阅读 · 0 评论 -
zoj - 3952
ZOJ 3952 Fibonacci Sequence Chicken Edition 题目链接 题意 当我读第一遍题时,心态是崩溃的。。。 好吧,不多废话。 其实就是让你编一个程序来输出另一个程序源码。(禁止套娃) 另一个程序就是题中的OPEC。 你编的程序输出的每一行 ‘c’ 的数量就是OPEC的一个操作码,有多少行输出便有多少个操作码。 这时你会想这和斐波那契数列有啥关系,其实就是通过操作码来算出斐波那契数列第n个数的值(n≤30且n≥1)。 思路 首先特判a是否为1,不是则初始化f(0) =原创 2020-06-21 18:11:07 · 243 阅读 · 1 评论 -
poj - 1661
POJ - 1661 : Help Jimmy 题目链接 思路 DP(动态规划)问题 垂直方向所走的路径一定,所以只用记录水平方向 每次的选择只有两个:向左走 和 向右走 DFS 遍历所有可能解,用path数组记录每个平台从左走和从右走的路径最小值 代码 #include<stdio.h> #include<limits.h> #include<algorithm> #include<string.h> using namespace std; i原创 2020-06-27 09:34:04 · 216 阅读 · 0 评论 -
kickstart 2019 H Diagonal Puzzle
kickstart 2019 H Diagonal Puzzle 题目链接 题目简介 有一个N*N(N≤100)的网格,每个格子的颜色为白或黑,每次操作可以使网格任意一条斜线上的所有格子颜色翻转,问最少通过多少步可以使得网格全部变成黑色。 例如,N=3的网格如下 总共可以操作的斜线有 4*N-2 条 ,也就是 10 条,这里只展示出反斜线 思路 明确每个格子都有两条斜线经过 最终结果与操作顺序无关 首先讨论正对角线是否翻转 之后遍历正对角线,如果格子为白色,翻转经过该格子的反斜线,无论格原创 2020-07-10 19:20:24 · 235 阅读 · 0 评论 -
kickstart 2020 C Perfect Subarray
Perfect Subarray 题目链接 题目简介 如果一个数组中所有数的和是平方数,那么这个数组称为完美数组。求一个数组的子数组中有多少个是完美数组。 解题思路 前缀和的思想 遍历这个数组aaa,在遍历到第xxx个元素时,prefixprefixprefix(前缀和)记录∑i=0xa[i]\sum_{i=0}^{x}a[i]∑i=0xa[i],我们现在想求以第xxx个元素为最后一个元素的子数组是完美数组的数量 如果我们记录下每一个前缀和出现的次数(用sss数组,s[i]s[i]s[i]表示前缀和原创 2020-08-27 10:46:41 · 184 阅读 · 0 评论 -
kickstart 2020 D Beauty of tree
Beauty of tree 题目链接 题目简介 一个有根树,现在有两个人以不同的步长分别随机选择树上的一个节点向根的方向遍历这个树, 定义这个树的权重为两个人期望遍历到的所有节点数量之和(如果两个人同时遍历到一个节点,那么这个节点只会计算一次),求这个树的权重。 解题思路 (借鉴了榜上第二名大佬的代码和思路) ...原创 2020-09-05 16:51:25 · 171 阅读 · 0 评论 -
kickstart 2020 F Painters‘ Duel
Painters’ Duel 题目链接 题目简介 在一个SSS等分三角图中,A和BA和BA和B两个人分别有一个起始位置,在图中有些位置不可经过且所有位置不可重复经过(假如AAA走过了(2,2),那么A和B均不能再经过(2,2)),两个人都试图使自己所经过的位置数量最大化,假设A和BA和BA和B两个人所做的选择均为最优选择,求在A和BA和BA和B不能移动时,AAA所经过的位置数减去BBB所经过的位置数。 下图为S=3时的情况 解题思路 这道题我看在比赛中通过的人数很少,其实如果思路想清楚了,还是比较简单原创 2020-10-18 15:48:26 · 143 阅读 · 0 评论 -
kickstart 2020 G Combination Lock
Combination Lock 题目链接 题目简介 有WWW个数字,每个数字都有初始值,且范围在1-NNN,定义一次操作为使WWW个数字中任意一个数字+1或-1 且 NNN+1定义为1且1-1定义为NNN,求使得所有WWW个数均变为同一个数的最小操作次数 解题思路 索引下标均从0开始 要想得到最小操作次数,一定先要找到要最终变成哪个数字(记为XXX) 暴力的话就尝试XXX所有可能的情况(即遍历1-NNN),计算每一次的操作次数,时间复杂度为O(NWNWNW) 不难(hennan)发现,要想操作次原创 2020-11-08 11:42:48 · 185 阅读 · 0 评论 -
推箱子(字节2018校招Android)
推箱子 题目链接 题目简介 有一个推箱子的游戏, 一开始的情况如下图: 上图中, ‘.’ 表示可到达的位置, ‘#’ 表示不可到达的位置,其中 S 表示你起始的位置, 0表示初始箱子的位置, E表示预期箱子的位置,你可以走到箱子的上下左右任意一侧, 将箱子向另一侧推动。如下图将箱子向右推动一格; …S0… -> …S0. 注意不能将箱子推动到’#'上, 也不能将箱子推出边界; 现在, 给你游戏的初始样子, 你需要输出最少几步能够完成游戏, 如果不能完成, 则输出-1。 解题思路 我一开始看到这道题原创 2021-02-13 18:06:26 · 231 阅读 · 0 评论 -
用户喜好(字节2018校招Android)
用户喜好 题目链接 题目简介 为了不断优化推荐效果,今日头条每天要存储和处理海量数据。假设有这样一种场景:我们对用户按照它们的注册时间先后来标号,对于一类文章,每个用户都有不同的喜好值,我们会想知道某一段时间内注册的用户(标号相连的一批用户)中,有多少用户对这类文章喜好值为k。因为一些特殊的原因,不会出现一个查询的用户区间完全覆盖另一个查询的用户区间(不存在L1<=L2<=R2<=R1)。 解题思路 区间查询我们可以联想到前缀和 首先可以想到构建一个函数fff返回从第一个标号开始到某一标原创 2021-02-13 18:30:47 · 198 阅读 · 0 评论 -
kickstart 2020 A Bundling
Bundling 题目链接 题目简介 有NNN个字符串,现在要把这NNN个字符串分成不同组,每组字符串个数均为KKK个,每组的得分记为KKK个字符串的最长公共前缀的字母数,现在要让得分最大化。 解题思路 容易想到用构建一个前缀树去做 前缀树的数据结构可以是多叉树,也可以是数组(前排大佬的做法) 具体解释下数组的做法 为所有前缀记一个索引(mmm) 数组ccc第一维是前缀索引,第二维是该前缀加上一个字母形成的前缀,值代表该前缀加上一个字母形成的前缀索引(这样做的原因是为了在dfs时,可以轻松遍历到这原创 2021-02-16 15:48:11 · 1199 阅读 · 2 评论