![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心
方哲Beans
一只小蒟蒻
展开
-
Array merging
给出两个长度为n的数组a,b,现在每次可以取出任意一个数组的第一个元素,放到c数组的后面,c数组一开始为空,求c数组连续相等的最长子串长度。这里可以用两个map把a,b数组每个元素对应的连续相等的最长子串的长度存起来,然后找到最大值即可,具体看代码。原创 2023-05-29 13:57:23 · 230 阅读 · 0 评论 -
Best Binary String
给一个包含0,1,?可以换成0或1,要求换完之后使得成本最小,二进制字符串的成本定义为按非降序对字符串进行排序所需的“反转字符串的任意连续子字符串”形式的最小操作数。因为每次操作是反转连续子字符串,即反转一个区间,所以一个1或0与连续的一块1或0的操作数都是一样的,所以只需要把?替换成与前面一样的即可。原创 2023-05-26 15:39:00 · 146 阅读 · 0 评论 -
Bracket Coloring
这里可以用栈来匹配括号序列,因为可以反转,而且要颜色最少。对于合法序列,不难发现,最多只需要花费两种颜色即可,先全部初始化为颜色2,对于正向匹配的括号,染成颜色1,最后判断,如果存在颜色2,说明存在逆向匹配的括号,这时候再重新初始化为2,将逆向匹配的括号染成1即可,因为正向匹配的括号不兼容逆向匹配的括号,而逆向匹配的括号兼容正向匹配的括号。给出一个括号序列,定义漂亮序列为匹配括号序列或者反转之后是匹配括号序列的序列,现在要求染色,使得相同颜色的括号组成漂亮序列,问最少需要多少种颜色即每个括号染的颜色。原创 2023-05-26 15:39:39 · 149 阅读 · 0 评论 -
Running Miles
利用前缀和和后缀和,l[i]表示前i个a[i]+i的最大值,r[i]表示后i个a[i]-i的最大值,最后枚举每一个i求l[i]+a[i]+r[i]的最大值即可。给一个数组a,任选一个区间l,r求a[i1]+a[i2]+a[i3]-(r-l)的最大值,其中l原创 2023-05-14 21:25:15 · 46 阅读 · 0 评论 -
Red-Blue Operations (Hard Version)
如果k小于n就直接加,如果k大于n就把加放在后面,后面全部加,前面的分组每一组为+cnt,-(cnt+1)如果k-n是偶数,那就要减(k-n)/2,如果是奇数,就减(k-n+1)/2。选一个数,如果它是红色,则+cnt,如果是蓝色,则-cnt,然后cnt++,如果当前是红色,变成蓝色,否则变成红色。设当前操作次数为cnt;原创 2023-05-13 12:54:24 · 170 阅读 · 2 评论 -
Vlad and Unfinished Business
先找到从s到e的路径,然后遍历路径上的所有点,找到从该点出发能到标记点并返回的最短路径。给一棵含有n个结点的树,起点s,终点e,还有其他k个标记点。f[i]表示从i点出发遍历能够到达的标记点并返回的最短路径。问从s出发遍历所以标记点最后到达e点的最短路径。原创 2023-05-12 18:38:56 · 42 阅读 · 0 评论 -
Teleporters (Hard Version)
把每一个传送门的最小花费和第一次到达需要的花费存起来,按最小花费排序。枚举第一扇门,之后即可使用传送门的最小花费。因为第一次在0位置,只能从前往后走,所以第一扇门要枚举。然后可以用二分枚举使用传送门的数量,至于总花费,可以用前缀和计算。给出n个传送门,每一个传送门可以传送到0或n - 1,现在有c个硬币,每走一步花费一个硬币,使用下标为i的传送门花费a[i]个硬币。初始位置为0,问最多可以使用多少个传送门。原创 2023-05-10 15:38:43 · 59 阅读 · 1 评论