
算法
白驹_过隙
你怎么过一天,就怎么过一年;你怎么过一年,就怎么过一生。
当下的每一天都是最珍贵的
展开
-
LEETCODE 1653. 使字符串平衡的最少删除次数
并判断leftb+righta是否小于当前最小值,是则更新,注意l一开始和righta相等。1.全a 2.全b 3.有a和b,a的左边无b,b的右边无a。然后再遍历,如果是a,当前righta-1否则leftb+1。想要达到平衡就是a的左边无b,b的右边无a。我们想统计a的个数,赋值给righta。其实1和2 是3的特殊情况(为0时)这道题其实不难,自己考虑复杂了。关键点在于把每种可能想清楚。原创 2023-03-07 08:43:00 · 485 阅读 · 1 评论 -
优快云竞赛第31期
题目要求是从左上角到右下角,最小路径和是多少,因此定义 dp[i] [j]的含义为:当小艺酱从左上角走到(i, j) 这个位置时,当前的最小路径和是 dp[i] [j]。2.第二题开学趣闻之美食诱惑是一个动态规划问题,相当于是给定一个包含非负整数的 n * n 网格,然后从左上角到右下角找到一条路径,使得路径上的权值总和为最小。由于奇数和偶数情况不同,一种是从(i, j - 1) 这个位置走一步到达。(vector[i][j] 表示当前网格中权值)一种是从 (i-1, j) 这个位置走一步到达。原创 2023-02-26 10:25:58 · 138 阅读 · 1 评论 -
【python】COCI ‘08 Contest 2 #3 Perket
为了做好 Perket,厨师必须谨慎选择食材,以在保持传统风味的同时尽可能获得最全面的味道。当我们添加配料时,总的酸度为每一种配料的酸度总乘积;总的苦度为每一种配料的苦度的总和。接下来的每一行都包含两个用空格分隔的整数,即每种成分的酸苦程度。输入数据将是这样的,如果我们用所有的食材做一顿饭,酸酸和苦味都将小于1000000000。众所周知,美食应该做到口感适中,所以我们希望选取配料,以使得酸度和苦度的绝对差最小。另外,我们必须添加至少一种配料,因为没有任何食物以水为配料的。输出酸味和苦味之间的最小差异。原创 2022-12-29 11:58:57 · 423 阅读 · 0 评论 -
【Leetcode】6-Z字形变换
通过观察规律可以发现每一个处于满列的元素与一下一个处于满列的元素(同一行)相差固定的距离,该距离为(numsRows-1)*2。比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下:L在原字符串中下标为0,同行下一个满列字符是‘C’,在原字符串中下标为4.对于满列之间的元素发现规律为:该元素在原字符串下标=同行的下一满列元素下标-2*当前行i的值。例如图中第二行第一个中间字符是'T',在原字符串中下标为3,同行的下一满列元素是'O',在原字符串中下.原创 2020-11-09 15:24:53 · 98 阅读 · 0 评论 -
【Leetcode】5-最长回文子串
class Solution {public: string longestPalindrome(string s) { int n = s.size(); vector<vector<int>> dp(n, vector<int>(n));//初始值是0 string ans;//初始为空字符串。 for (int l = 0; l < n; ++l) { for .原创 2020-11-06 16:00:35 · 610 阅读 · 0 评论 -
【Leetcode】4-寻找两个正序数组的中位数
方法一:暴力求解1.合并数组 2.进行排序找到中位数由于未利用数组自身有序的条件,时间复杂度高,用快排也需要的时间复杂度。方法二:合并两个有序数组1.利用归并排序关键步骤合并两个有序数组,找到中位数时间复杂度:方法三:二分查找1.利用二分查找用一条分割线把两个数组分成左右两部分。分割要求:(1)左右数量相等或者左边多一个(奇数情况) (2)左边的元素小于右边的元素2.整体偶数个:找到左边部分最大的,和右边部分最小的,求和除以2(实际...原创 2020-11-05 19:26:25 · 1045 阅读 · 0 评论 -
【算法】算法知识点归纳
1.if(flag)等价于.if(flag!=0),简写要弄清含义。原创 2020-09-05 15:52:23 · 215 阅读 · 0 评论 -
【c/c++】约瑟夫环
约瑟夫问题约瑟夫问题是个著名的问题:N个人围成一圈,第一个人从1开始报数,报M的将被杀掉,下一个人接着从1开始报。如此反复,最后剩下一个,求最后的胜利者。例如只有三个人,把他们叫做A、B、C,他们围成一圈,从A开始报数,假设报2的人被杀掉。首先A开始报数,他报1。侥幸逃过一劫。 然后轮到B报数,他报2。非常惨,他被杀了 C接着从1开始报数 接着轮到A报数,他报2。也被杀死了。 最终胜利者是C核心在于关注胜利者的下标位置是怎么变的。每杀掉一个人,其实就是把这个数组向前移动了M位。求出.原创 2020-09-03 10:15:15 · 1070 阅读 · 0 评论 -
【PTA】6翻了
“666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这是 3 个 “9”!本题就请你编写程序,将那些过时的、只会用一连串“6666……6”表达仰慕的句子,翻译成最新的高级表达。输入格式:输入在一行中给出一句话,即一个非空字...原创 2020-01-18 14:27:35 · 763 阅读 · 0 评论 -
【PTA】7-14 福到了
“福”字倒着贴,寓意“福到”。不论到底算不算民俗,本题且请你编写程序,把各种汉字倒过来输出。这里要处理的每个汉字是由一个 N × N 的网格组成的,网格中的元素或者为字符 @ 或者为空格。而倒过来的汉字所用的字符由裁判指定。输入格式:输入在第一行中给出倒过来的汉字所用的字符、以及网格的规模 N (不超过100的正整数),其间以 1 个空格分隔;随后 N 行,每行给出 N 个字符,或者为 @...原创 2020-01-17 10:47:04 · 1097 阅读 · 0 评论 -
【PTA】7-10 倒数第N个字符串
7-10 倒数第N个字符串给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, ..., aaz, aba, abb, ..., abz, ..., zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第...原创 2020-01-16 10:56:40 · 840 阅读 · 4 评论 -
【PTA】Hello World for U
Given any string of N (>=5) characters, you are asked to form the characters into the shape of U. For example, "helloworld" can be printed as:h de ll rlowoThat is, the characters m...原创 2020-01-15 16:23:42 · 547 阅读 · 0 评论 -
【C/C++】输入数据个数未知情况下输入方法
刷题时经常需要输入多组数据,但是数据个数未知,这时候就不能以数据个数作为输入是否结束的判断标准了,可以通过以下方法来实现未知情况下的输入。1.C语言:scanf语句会返回其成功读入的参数个数,例如scanf("%d",&a)返回值为1,因此我们可以用scanf返回值为-1判断是否输入结束。C语言使用EOF(End Of File)来代表-1;注意在黑框中输入数据时并不会触发EOF状...原创 2020-01-14 17:34:56 · 35849 阅读 · 11 评论 -
【PTA】7-6 整除光棍
7-6 整除光棍这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要...原创 2020-01-13 21:46:53 · 1051 阅读 · 0 评论 -
【PTA】7-3 阅览室
天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效...原创 2020-01-13 11:33:23 · 400 阅读 · 0 评论 -
【STL】并查集算法
并查集可以称之为不相交集合,在处理查找几个元素是否在同一集合时使用并查集可以达到非常快的处理速度,并查集的思想有一点很重要,就是利用树的思想,表示不同的不相交的集合状态,利用根节点作为代表元素,来对整个集合的数据进行处理。并查集是一种非常精巧而实用的数据结构,主要用于处理一些不相交集合的合并问题,一些常见的用途有求连通子图、最小生成树的karkal算法、和求最近共同祖先等问题。使用并查集时...原创 2019-01-23 11:12:27 · 1268 阅读 · 1 评论 -
【运筹学】km算法入门 (运筹最大对集问题 二分问题的最大权对集)
一、匈牙利算法匈牙利算法用于解决什么问题?匈牙利算法用于解决二分图的最大匹配问题。什么是二分图?我们不妨来考虑这样一个问题,在一家公司里,有员工A,B,C,有三种工作a,b,c,如果员工和工作之间有线相连,则代表员工能胜任这份工作。如图所示,员工A能胜任a,c工作,员工B能胜任a,b,c工作,而员工C只能胜任c工作。上图就是所谓的“二分图”(请忽略图中箭头),简单的说,上图...原创 2019-06-12 09:36:24 · 2056 阅读 · 0 评论 -
【PTA】悄悄关注
HBU-DS2018SY-3-1 悄悄关注 (25 分)新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对其他用户的点赞情况,扒出有可能被其悄悄关注的人。输入格式:输入首先在第一行给出某用户的关注列表,格式如下:人数N 用户1 用户2 …… 用户N其...转载 2018-12-19 18:06:24 · 1466 阅读 · 2 评论