c++算法必练基础200题
文章平均质量分 91
旧林墨烟
惠州学院大四学生,热爱算法竞赛,获得蓝桥杯、天梯赛、ccpc、icpc等多项奖项,熟悉c++、java语言,目前处于求职状态
展开
-
c++算法基础必刷题目——按位贪心
2、因为按位与、按位或、按位异或都是不会产生进位的,所以我们可以按位独立去考虑问题,某位不是1就是0,那么我们可以让那一位是1和0,查看结果再做判断,例如某一位是1时,经过一系列操作变成了0,是0时,经过一系列操作变成了1,那么就让该位是0是最合适的。1、1和10,1的二进制是0000 0001,10的二进制是0000 1010,找到第一位不同的,那就是第5位,那么选择的第一个数就是0000 1000,第二个数是0000 0111,答案是0000 1111,即15。接下来 𝑛 行,依次表示每一扇防御门。原创 2022-12-30 21:00:04 · 771 阅读 · 1 评论 -
c++算法基础必刷题目——贪心+公式推导
排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。,那么排序将是ABC,此时解是最优的,因为无论再交换任意两个大臣的位置,都会使得最大奖赏更大,假如B和C交换位置,那么第二位大臣奖赏减少,第三位大臣奖赏增加,但是此时第三位大臣的奖赏一定比交换之前第二位大臣的奖赏高,那么就说明了此时是最优的排序。注意,国王的位置始终在队伍的最前面。刚接触肯定会觉得难,多些做题多些用,熟悉了就容易了,兄弟萌,加油!原创 2022-12-29 20:06:28 · 1644 阅读 · 0 评论 -
c++算法基础必刷题目——贪心
贪心,有 5 各用空格隔开的整数,分别是 M,N,K,L,D(2 ≤ N,M ≤ 1000,0 ≤ K < M,0 ≤ L < N,D ≤ 2000)M,N,K,L,D(2≤N,M≤1000,0≤K原创 2022-12-29 16:57:47 · 1960 阅读 · 0 评论 -
c++算法基础必刷题目——指针优化
月月出于人类最单纯的好奇心,打开了华华的手机。月月顿时醋意大发,出于对好朋友的关心,为了避免华华浪费太多时间和其他网友聊天,她要删掉一些推荐好友。但是为了不让华华发现,产生猜疑,破坏了他们的友情,月月决定只删华华有可能搭讪的推荐好友。现在月月要快速的判断出哪些推荐好友要删掉,因为华华快回来了,时间紧迫,月月有点手忙脚乱,所以你赶紧写个程序帮帮她吧!输出N行,对于第i个推荐好友,如果华华可能向她搭讪,输出Yes,否则输出No。刚接触肯定会觉得难,多些做题多些用,熟悉了就容易了,兄弟萌,加油!原创 2022-12-29 15:05:36 · 1532 阅读 · 0 评论 -
c++算法基础必刷题目——递推
2、初始地,a[2]={1,1},i=0时,a[i]=1,那么状态dp[0][001]=1,dp[0][010]=1,i=1时,a[i]=1,那么状态dp[1][010]+=dp[0][001],dp[1][100]+=dp[0][010],仔细分析转移的关系即可,例如100可以由010以及110转移得到,011可以由001以及101转移得到,即前两位与前一个状态的后两位相等。第一行为N,第二行有N个数,依次为第二列的格子中的数。刚接触肯定会觉得难,多些做题多些用,熟悉了就容易了,兄弟萌,加油!原创 2022-12-28 23:18:46 · 1595 阅读 · 1 评论 -
c++算法基础必刷题目——尺取法
尺取法比直接暴力枚举区间效率高很多,尤其是数据量大的时候,所以说尺取法是一种高效的枚举区间的方法,是一种技巧,一般用于求取有一定限制的区间个数或最短的区间等等。牛客幼儿园的小朋友们围成了一个圆圈准备玩丢手绢的游戏,但是小朋友们太小了,不能围成一个均匀的圆圈,即每个小朋友的间隔可能会不一致。1、开始,l和r都在a点,目前不是最优状态,r往顺时针方向走到b,目前也不是最优状态,r往顺时针方向走到c,达到最优状态,记录答案。接下来的第2到第n行,第i行有一个整数,表示第i-1个小朋友顺时针到第i个小朋友的距离。原创 2022-12-27 19:30:46 · 858 阅读 · 0 评论 -
c++算法基础必刷题目——前缀和与差分
前缀和与差分算法主要是为了快速求出某个区间的和,例如有一个数组a[10]={0,1,2,3,4,5,6,7,8,9},我们需要求a[3]到a[7]的和,传统的办法是求a[3]+a[4]+a[5]+a[6]+a[7],但是这样求复杂度是O(n),如果我们建立了一个前缀数组S[9]={a[0],a[0]+a[1],a[0]+a[1]+a[2],a[0]+a[1]+a[2]+a[3],……4、枚举到a[3]时,前缀和后a[3]的状态是1,那么ans+=m[1],为什么呢。数轴上的每个整数点,即0,1,2,原创 2022-12-27 18:48:16 · 1623 阅读 · 0 评论 -
c++算法基础必刷题目——枚举
接下来的n行中,第i+1行表示编号i的地毯的信息,包含四个正整数a,b,g,k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标(a,b)以及地毯在x轴和y轴方向的长度。牛牛认为,一个日期是回文的,当且仅当表示这个日期的8位数字是回文的。一个8位数字是回文的,当且仅当对于所有的i ( 1原创 2022-12-26 20:52:57 · 1168 阅读 · 0 评论 -
c++算法基础必刷题目——模拟
在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或“4-8”的子串,我们就把它当作一种简写,输出时,用连续递增的字母或数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。(1)遇到下面的情况需要做字符串的展开:在输入的字符串中,出现了减号“-”,减号两侧同为小写字母或同为数字,且按照ASCII码的顺序,减号右边的字符严格大于左边的字符。3、当集合满了的时候,再次添加单词时,需要根据双端队列删除最先加入的单词。原创 2022-12-26 20:08:27 · 1371 阅读 · 0 评论