
算法
文章平均质量分 50
sigd
这个作者很懒,什么都没留下…
展开
-
EF161 E. Increasing Subsequences
和基本二进制处理略有区别,比如序列[3,4,1,2]包含2个连续子序列,但所有子序列只有一个空集,答案是4+3=7个上升子序列,再看看这个[7,8,9,,1,2],共有3个连续子序列,因为后面的数字小,不可能和前面关联起来,所以子序列个数为[7,8,9]的8个,[3,4,5]的7个,[1,2]的3个。(1)如果X是一个奇数,先在序列尾部插入一个极小值,那么问题就变成了如果构造一个长度为X-1的子序列。例如序列[1,2],有4个上升子序列,分别是空序列[],[1],[2],[1,2]。原创 2024-01-30 10:46:55 · 458 阅读 · 0 评论 -
CF920 D. Very Different Array(排序+贪心)
现在b数组数量多过a数组,那么选取规则(贪心)就演变成b数组前面的k个数字和a数组后k个数字匹配。b数组后面n-k个数字和a数组前n-k个匹配。为求出这个合适的K值,需要枚举。下面代码先从k=n开始计算,当k为n-1时,原本abs(a1-bn)变为abs(a1-bm),依次类推。分析:如果b数组也是n个数字,那么a和b排序后,a最小匹配b最大(a1 bn),依次(a2 bn-1).。题意:a数组n个数字给定,b数组m个数字中选出n个,与a数组对应差的绝对值和最大。原创 2024-01-29 10:30:29 · 721 阅读 · 0 评论 -
Codeforces Round 893 (Div. 2)-B. The Walkway
规则如下,(1)走到m个点的任意一个点都必须吃饼干,(2)每次行走距离达到d时必须吃饼干,吃完饼干后行走距离归零。要求:(1)计算出主角吃饼干的总数(注意可以删除一个点再计算总数)(2)如果可以删除一个点,哪么可以删除的点的数量。初步分析:有两种情况,一是可以删除某个点使得次数少一个(需要统计这些点数量),另一种就是删除任何一个点总数都不变(注意这种情况可以看成删除点数量为m)。因为只能删除一个点,可以在计算总数过程中,顺路进行枚举,例如判断a[i]能否删除,计算下吃饼干次数t1+t2和t3的大小可知。原创 2023-08-17 09:46:36 · 320 阅读 · 0 评论 -
游游的选数乘积-2022年携程秋招第四批
游游的选数乘积-2022年携程秋招第四批原创 2023-07-20 09:38:22 · 443 阅读 · 0 评论 -
中兴软件类笔试试卷A-消灭怪物
对于第一组:我们首先用技能1,此时怪物血量剩余90,然后使用技能3,此时怪物剩余血量为85,最后用技能2,由于技能2在怪物血量小于89的时候双倍伤害,故此时怪物已经消灭,答案为3。对于第三组:我们首先用技能1,此时怪物血量剩余90,然后使用技能3,此时怪物剩余血量为85,最后用技能2,由于技能2在怪物血量小于84的时候双倍伤害,故此时怪物无法消灭,输出-1。对于第二组:我们首先用技能1,此时怪物血量剩余90,然后用技能2,由于技能2在怪物血量小于90的时候双倍伤害,故此时怪物已经消灭,答案为2。原创 2022-10-04 23:52:20 · 500 阅读 · 0 评论 -
CF 570 E. Subsequences (easy version)
题目大意:给定一个字符串,让你构造一个包含K个字符串子序列的集合(可以是空串,无重复元素)。得到一个字符串子序列的方法是删除某些字符,例如abcd的子序列ac,ad等。尽可能删除少的字符,这样得到子序列代价小。按删除0个,1个,2个.....的次序依次得到子序列,如果不重复即可选取(选到k个结束)。可用set或map来判断是否重复,同时存储不重复的子序列。样例解析5 6 aaaaa ,子序列共有6个,空串=代价5,aaaaa=代价0,aaaa=代价1,aaa=代价2,aa=代价3,a=代价4,总和15。原创 2023-05-28 22:09:51 · 142 阅读 · 0 评论 -
codeforces 149-D. Bracket Coloring
后左右括号匹配的序列。现在要你对一个字符串每个字符涂一种颜色,使得同种颜色的字符序列拿出来以后是“好的字符串”。需要输出(1)最少涂几种颜色(2)输出每个字符对应的颜色编号。分析:观察样例,实际上颜色的数量最多就两种,因为只能“逆置”,所以字符串中左右括号数量必须相同才能完成 “涂色”+“好的字符串”。实现:如果序列中只有一种括号,括号匹配就不需要使用栈结构,只需一个变量统计左括号数量即可。好的字符串 有两种形式(1)左右括号匹配的序列(2)一套正序的好字符串 和 一套逆序的好字符串。原创 2023-05-26 22:42:53 · 437 阅读 · 0 评论 -
力扣第 104 场双周赛 2681. 英雄的力量
容易想到先排序,排序后的序列可以取任意ai和aj,那么ai最小值,aj 最大值,i和j之间的元素可以任取,例如i=2,j=6,那么i和j之间有3个其他元素,这3个元素可以任取,因此共有2的3次幂共8种选取方法:(a2,a6) (a2,a3,a6) (a2,a4,a6) (a2,a5,a6)(a2,a3,a4,a6).......。可以发现规律为当ai为最大值时,其组成所有子序列的力量和为Y[i]*a[i]*a[i],而这个Y[i]可以由Y[i-1]*2+a[i-1]求得。求所有子序列的力量和。原创 2023-05-15 12:14:45 · 1092 阅读 · 0 评论 -
Constructive Problem-Codeforces Round 866 (Div. 1)
题目大意:n个非负整数数组a,MEX(a)=m,m是数组中缺失的最小数字(从0开始),例如1 0 3 4缺失2,0 2 2 0 缺失1,3 4 5 6缺失0,0 1 2 3 缺失4。分析:找到缺失数字X很容易,找到之后进行修改,使得数组不缺少X,而是缺少X+1。例如 0 2 2 0 缺失1,那么只要把所有的2都改成1,缺失变成2满足提议。必须把X+1全部修改成X,因为是区间修改,所以修改后如样例3可能不满足要求。(3)特殊情况,什么时候绝对无法修改,如果n个数字缺失值为n,那么绝对无法修改得到n+1。原创 2023-04-22 11:42:23 · 151 阅读 · 0 评论 -
CF 863 (Div. 3) D. Umka and a Long Flight(递归)
题目大意:一个矩形长和宽分别是斐波那契序列f[n]和f[n+1],现在把这个矩形分割成n+1个正方形,尺寸均不相同(除了2个1的正方形),且和斐波那契数列一一对应。给你一个坐标,问你切割之后这个坐标能否正好对应尺寸为1的正方形。分析:上图为题目样例3的一种条件切割结果,发现左侧3*3也可以调换到右侧,而2*2和两个1*1也可以上下对换位置。从另一个角度看,如果把左侧3*3拿掉,剩下的就是。此时问题变成一个长宽为2*3的矩形,也就是问题(3,1,4)转换成了问题(2,1,3)原创 2023-04-05 11:34:56 · 710 阅读 · 2 评论 -
CF GLR24-C. Doremy‘s City Construction
CF竞赛Codeforces Global Round 24 第3题原创 2022-12-12 20:54:49 · 384 阅读 · 0 评论 -
力扣周赛314-矩阵中和能被 K 整除的路径(动态规划)
力扣周赛314-矩阵中和能被 K 整除的路径(动态规划)原创 2022-10-15 22:50:53 · 377 阅读 · 0 评论 -
公司食堂-美团2021校招笔试(线性数据结构的应用)
美团2021校招笔试-编程题(通用编程试题,第10场) 公司食堂原创 2022-10-05 10:32:50 · 697 阅读 · 0 评论 -
连续子数组数量-腾讯音乐娱乐集团2023校园招聘技术类岗位
所谓的子数组就是区间,要求找到所有满足条件的区间。乘法末尾0的数量是比较常见的问题,本质是所有数字中因子2和因子5的数量。那么如果一个区间[i,j]满足乘积不少于x个0的要求,在这个区间基础上增加元素,一定也满足乘积不少于x个0的要求。解题方法:前缀和+双指针。前缀和用于统计区间内因子2和5的数量,双指针确定以j为右端点,且满足条件的最短区间。如果这个区间是 [i,j],那么[1,j],[2,j]........[i-1,j],一定也满足条件。前缀和和双指针算法复杂度均为O(n),此算法复杂度为O(n)。原创 2022-10-02 11:31:10 · 302 阅读 · 0 评论 -
好矩阵-腾讯音乐娱乐集团2023校园招聘技术类岗位编程题
定义一个矩阵为“好矩阵”,当且仅当该矩阵所有2*2的子矩阵数字和为偶数。原创 2022-10-02 11:03:56 · 618 阅读 · 0 评论 -
字符串操作-腾讯音乐娱乐集团2023校园招聘技术类
相对比较简单的贪心题目。消除重复字符有两种方法,将两个相同字符消去一个,或是更换为另一种字符。例如aaaa可以将aa变成一个b,再将剩下aa变成一个a。也可以三次消除操作得到一个a。显然变成一个未出现的字母效果更好。原创 2022-10-01 23:00:50 · 333 阅读 · 0 评论 -
嘤嘤的新平衡树-腾讯音乐娱乐集团2023校园招聘技术类岗位
腾讯面试真题原创 2022-10-01 22:27:44 · 458 阅读 · 0 评论 -
CF 552 E. Two Teams (排序+双链表)
传送门:Problem - E - Codeforces题目大意:两个教练(1号和2号)选队员,选择规则是当前能力值最大的队员(确保所有队员能力不一样),在选择最大队员同时,其左右各k个队员也同时被选中。1号教练先选。解题思路:暴力算法很容易想到,先循环找到最大值,再左右两侧各找k个点。复杂度是。为降低复杂度,先按能力值排序,这样可以直接定位当前最大值。那么左右两侧k个点怎么处理?如果用循环找的话还是可能复杂度。这样可以考虑用双链表来维护,比如原序列是(1,2,3,4,5),1的next是2原创 2022-05-17 22:42:54 · 812 阅读 · 0 评论 -
19144 偷懒的士兵3(递归算法)
递归算法是最基础的一种算法,其难点在于初学时很难用递归思想去思考问题。递归思想:将问题转换成某种数学模型,每一次递归让数学模型的规模变小,直到其到达终结状态。解题思路:判断编号x的士兵是否有可能被选中,那么每次“去除”时一定不能去除这个x,这样当去除到边界条件(人数<=3)时,如果人数恰好等于3,那么能选中x去巡逻,小于3,无论如何无法选中x。可以尝试用一些具体数据来描述问题,例如n=100,x=47,此时x为奇数项,将偶数项去除,剩余(1,3,5,7......47........9..原创 2022-05-17 21:49:01 · 591 阅读 · 0 评论 -
18901 古典文学部
新生赛 202018901 古典文学部Description千反田在收拾古典文学部的储物室时,发现了一盒陈年已久的火柴。“这显然是不能用了呀”,她思索道。突然,千反田想到了个点子并跑到了折木前面。“我很好奇!”看着双手捧着火柴盒的千反田,折木揉了揉额头知道她又想到了什么问题。折木是个节能主义者,看到了你从活动室前经过想邀请你一起解答问题,你能帮帮他吗。现在有a根火柴,要求恰好用完这a个火柴摆出数位为n的数字,并要求这个数字最大,或者判断没有数字能满足条件。数字0原创 2022-05-13 00:05:17 · 253 阅读 · 0 评论 -
CF790 H2. Maximum Crossings (Hard Version)
CF出div 4了,初学者也可以打比赛,AK不是梦~~原题链接Problem - H2 - Codeforces题目大意:在上下连个区间连线,例如样例中7 4 1 4 6 7 7 5那么连线方式就是上面1和下面4,上面2和下面1,即线段[1,4],[2,1],[3,4]...........要求最多能得到多少个线之间交叉点。通过分析可以看出,两个线段[a,b]和[c,d],其中a和c一定不相同,假设a<c,那么只有当b>=d时两线才有交点。解题思路:只要按次序读入原创 2022-05-11 19:48:01 · 754 阅读 · 0 评论 -
CF 787 E. Replace With the Previous, Minimize
原题链接:https://codeforces.com/contest/1675/problem/E题目大意:给你最多k次操作机会,对字符串某类小写字符进行减小操作,比如可以花费一次操作将所有的'c'改成'b'。求不超过k次操作字典序最小。解题思路:字典序最小显然应让第一个字符变得最小,如可能编程字符a,如k比较小,那么尽可能减小第一个字符。如果k把第一个减小之后还有剩余,尝试减小第二个。注意,如果第一个字符是f,那么当我们把f变成a时,字符串中所有小于f的如e,d,c也都会变成a...原创 2022-05-07 00:21:45 · 668 阅读 · 0 评论 -
CF 780 F2. Promising String (hard version)
题外话:本次考试基本都是数据结构题目。博主感觉做起来很顺......当然WA是不可避免的......题目大意:一个字符串只包含+ 和 -两种字符,满足要求的子串或者是+和-数量相同,如+-,++--。或者是-号与+号的数量差为3的倍数,因为两个-可以升级成promising一个+。 这样问题就是求某个子串,其中-号数量减去+号数量是3的倍数。解题思路:我们把+号看成-1,减号看成1。这样问题就变成求一个序列中有多少个子段,其“子段和大于等于0且为3的倍数”。本题目还有个F1 (ea...原创 2022-04-03 18:52:44 · 1478 阅读 · 0 评论 -
CF 780 E. Matrix and Shifts
Problem - E - Codeforces题目恰好和昨天讲过的矩阵相关,所以读完题目就已经有了答案。题目大意:仅有0和1组成的矩阵,矩阵可以整体性地上下移动或左右移动,移动不花费代价,然后可以通过异或运算,将矩阵转换成对角线元素均为1,而其他值为0的矩阵。每次异或运算代价1,求最小代价解题思路:由于题目要求对角线为1,而其他为0,所以通过移动让对角线种1的数量尽可能多,这样才能使得代价最小。而每一条斜线都可以通过移动转移到对角线上去。那么哪些元素可以通过移动,构成对角线元素,可找...原创 2022-04-03 10:19:29 · 431 阅读 · 0 评论 -
力扣 第 73 场双周赛 2193. 得到回文串的最少操作次数
解题思路:贪心。题目确保一定能交换得到回文,首先想到要分两种情况考虑,奇数长度和偶数长度,是否应该计数数组找到奇数长度中点元素?进一步思考并不需要考虑奇数偶数长度问题,只要按次序处理s[0]....s[n/2]即可。某种特殊情况发生时必然是奇数长度。class Solution {public: int minMovesToMakePalindrome(string s) { int i=0,j,k,n=s.size(),ans=0; while(...原创 2022-03-19 22:50:57 · 364 阅读 · 0 评论 -
力扣周赛 银联-04. 合作开发
2 <= skills.length <= 10^5 1 <= skills[i].length <= 4 1 <= skills[i][j] <= 1000 skills[i]中不包含重复元素解题思路:注意观察数据,题目不能使用平方级算法。每个人掌握的技能数量是极少的,不超过4个,而总技能数量也很少,不超过1000。第一印象:哈希或字典树?显然应该想办法快速找到互相包含的集合(找互斥的集合不好处理,且无法优化)。如果集合A包含集合B,那么B是A的子集,...原创 2022-03-17 17:37:19 · 327 阅读 · 0 评论 -
中国银联专场竞赛 银联-03. 理财产品
解题思路:显然应该出最大值,例如序列8 5 1;一定要先把8出去,先出8 7 6,之后序列成为 5 5 1,然后两个5一起出(一次出2个)5 4 3 2,序列变成 1 1 1,三个1一起出......排序+简单模拟,需要注意的是乘法运算很容易超出int范围导致结果不正确,坚持开longlong是一种好的习惯。class Solution{public: int maxInvestment(vector<int>& product, int limit) ...原创 2022-03-17 15:31:28 · 455 阅读 · 0 评论 -
CF ECR 124-D. Nearest Excluded Points
思路一:考虑到点的数量不超过200000,那么构成的最恶心的图形(即所有点都挤在一起)半径不会超过800,题目时限是4秒钟。莫非基础bfs能过?#include <bits/stdc++.h>typedef long long ll;using namespace std;pair<int,int> a[200005];int n;int dx[4]= {0,0,1,-1},dy[4]= {1,-1,0,0};int qx[2000005],qy[200000...原创 2022-03-12 10:53:05 · 543 阅读 · 0 评论 -
CF ECR124-C Fault-tolerant Network
Problem - C - Codeforces题目大意:两个以为数组,分别代表网络A和网络B的n台计算机,A网B网线性连接,现在要求在A和B之间连上几条网线,让AB合并成一个网络,A的i机器和B的j机器连接代价是abs(a[i]-b[j]),并且让新网络删除任何一台计算机后仍保持连通,求最小连接代价。解题思路:让一台计算机不连通,那么就得删除它的邻接点,实际上只有4台计算机邻接点数量是1(度为1),即a[1],a[n],b[1],b[n],如果整个AB网络已经连通,那么其他计算机无论删除那一...原创 2022-03-11 10:50:54 · 520 阅读 · 2 评论 -
1889. 装包裹的最小浪费空间(前缀和+二分查找)
装包裹的最小浪费空间给你 n 个包裹,你需要把它们装在箱子里,每个箱子装一个包裹。总共有 m 个供应商提供 不同尺寸 的箱子(每个规格都有无数个箱子)。如果一个包裹的尺寸 小于等于 一个箱子的尺寸,那么这个包裹就可以放入这个箱子之中。包裹的尺寸用一个整数数组 packages 表示,其中 packages[i] 是第 i 个包裹的尺寸。供应商用二维数组 boxes 表示,其中 boxes[j] 是第 j 个供应商提供的所有箱子尺寸的数组。你想要选择 一个供应商 并只使用该供应商提供的箱子,使得 总.原创 2021-06-07 13:28:02 · 416 阅读 · 0 评论 -
力扣 1888. 使二进制字符串字符交替的最少反转次数(前缀和+滑动窗口)
使二进制字符串字符交替的最少反转次数给你一个二进制字符串 s 。你可以按任意顺序执行以下两种操作任意次:类型 1 :删除 字符串 s 的第一个字符并将它 添加 到字符串结尾。类型 2 :选择 字符串 s 中任意一个字符并将该字符 反转 ,也就是如果值为 ‘0’ ,则反转得到 ‘1’ ,反之亦然。请你返回使 s 变成 交替 字符串的前提下, 类型 2 的 最少 操作次数 。我们称一个字符串是 交替 的,需要满足任意相邻字符都不同。比方说,字符串 “010” 和 “1010” 都是交替的,但是字符.原创 2021-06-07 13:11:37 · 764 阅读 · 0 评论 -
算法学习的一些看法
以下文字仅代表个人观点和个人经验。算法是计算机解决问题的方案,伴随着无数新问题的诞生,对应算法的种类与内容正在不断增加,应用系统的算法设计变得越来越重要。一个显而易见的现象,企业对大学毕业生的算法要求越来越高,在面试各个阶段都会涉及算法内容,将来不会写代码的“专业人士”肯定会越来越少,未来你的面试官很可能就是一个算法“高手”,也许他会觉得“这么简单的问题”你都不会?其实除了极少数“天赋异禀”的人之外,大部分同学们在学习过程中都会感受到算法的“恶意”,如果你想更加深入的学习,你会真心感受到计算机算法的内容原创 2021-05-31 23:03:22 · 1714 阅读 · 12 评论 -
1461:Beads
1461:Beads【题目描述】Zxl有一次决定制造一条项链,她以非常便宜的价格买了一长条鲜艳的珊瑚珠子,她现在也有一个机器,能把这条珠子切成很多块(子串),每块有k(k>0)个珠子,如果这条珠子的长度不是k的倍数,最后一块小于k的就不要拉(nc真浪费),保证珠子的长度为正整数。 Zxl喜欢多样的项链,为她应该怎样选择数字k来尽可能得到更多的不同的子串感到好奇,子串都是可以反转的,换句话...原创 2019-05-29 12:50:30 · 973 阅读 · 0 评论 -
1351: 家谱树
【题目描述】有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。给出每个人的孩子的信息。输出一个序列,使得每个人的后辈都比那个人后列出。【输入】第1行一个整数N(1≤N≤100),表示家族的人数;接下来N行,第I行描述第I个人的儿子;每行最后是0表示描述完毕。【输出】输出一个序列,使得每个人的后辈都比那个人后列出;如果有多解输出任意一解。【输入样例】504 5 1...原创 2018-12-05 10:27:20 · 1155 阅读 · 0 评论 -
1371:看病
1371:看病时间限制: 1000 ms 内存限制: 65536 KB提交数: 1074 通过数: 380【题目描述】有个朋友在医院工作,想请BSNY帮忙做个登记系统。具体是这样的,最近来医院看病的人越来越多了,因此很多人要排队,只有当空闲时放一批病人看病。但医院的排队不同其他排队,因为多数情况下,需要病情严重的人优先看病,所以希望BSNY设计系统时,以病情的严重情...原创 2018-11-20 10:59:17 · 2210 阅读 · 0 评论