- 博客(13)
- 收藏
- 关注
原创 小蓝的零花钱(Lanqiao OJ 3236)
小蓝有一些零花钱,他可以用这些钱来做一个特殊的操作:他在序列中选取一个位置,然后在这个位置上将序列分成两段,要求每一段中偶数和奇数的数量都相等。用一个前缀和数组pre [i] 存储是奇数还是偶数,如果前缀和数组为0,即 pre[i] == 0,表示奇数和偶数的数量相等,可以进行分割。第二行包含 n 个整数 a1,a2,...,an( 1 ≤ ai ≤ 100 ),表示给定的序列(保证在这 n 个元素中奇数的个数等于偶数的个数)。输出一个整数,表示在小蓝的预算范围内,能够进行的最多操作次数。
2024-02-12 13:29:04
326
1
原创 小蓝的礼物(Lanqiao OJ 3792)
采用扣钱的方法,用总共的钱减去每件商品的价值,看够减几次;如果剩下的钱不够当前商品价值的一半并向上取整时,即k <a [i] / 2 + 1 时,跳出循环。
2024-02-01 15:44:46
496
1
原创 最大的卡牌价值(Lanqiao OJ 3250)
首先定义两个数组,用来存放卡牌的正面和卡牌的反面。定义一个优先队列用于记录卡牌正反面的差值,less< ll >,表示采用大顶堆的排序顺序,即队列由大到小进行排列。再将差值加到 ans 中,ans 即为最大的卡牌价值。本题也可采用小顶堆的方式,即less< ll >。
2024-02-01 12:44:25
378
1
原创 排序实现合集
冒泡排序采用双层循环,假设理想的排序结果是从左到右从小到大排列。那么外层循环则从最右边的位置开始确定,内层循环从最左边的位置相邻两两进行比较,经过一趟冒泡排序使最大的元素到达最右边。经过第二趟排序使第二大的元素到达次右边的位置上......直到使所有元素有序。
2024-01-27 17:15:11
628
原创 最大数组和(Lanqiao OJ 3260)
定义一个数组 a[N] 用于存放这一组宝石。sort(a+1,a+n+1)对这一组宝石由小到大进行排序。计算其前缀和 pre[i]定义一个x用于存放操作后宝石的总价值。i
2024-01-27 13:25:38
313
原创 大石头的搬运工(Lanqiao OJ 3829)
本题分别计算堆中任意一块石头的前后两部分各自的前缀和 pre[i] 和 nex[i] ,通过min找到最小的。定义了一个pair,用于存储石头的重量和位置两个信息,通过pair的 sort 排序功能 对石头的位置进行排序,便于后面计算前缀和时对距离的计算。然后分别对pair中的每一个的石头计算 pre[i] ,和nex[i]。最后通过min找到最小的费用即可。
2024-01-26 16:59:06
229
1
原创 无尽的石头(Lanqiao OJ 3766)
因为有 t 次询问,所有用while(t--)表示每次询问,定义一个sum表示当前走到的步,当sum<n,表示还没走到相应的位置,定义一个ans表示每一步增加的数,即各位之和。通过双层while循环,内层循环表示从i=1开始每一步增加的方法,加到ans上。定义一个count=0,表示所执行的操作数,每执行一次循环,count++。外层循环sum加上ans表示这一步走完到什么位置了,i=sum表示更新当前位置。令ans=0表示下一步数又重新计算各位之和。
2024-01-26 13:06:39
309
1
原创 小蓝的漆房(Lanqiao OJ 3272)
小蓝是一位有名的漆匠,他的朋友小桥有一个漆房,里面有一条长长的走廊,走廊两旁有许多相邻的房子,每间房子最初被涂上了一种颜色。小桥来找小蓝,想让他把整个走廊都涂成同一个颜色。小蓝告诉小桥,他每天只能涂一段长度为 k 的区间。对于每个区间,他可以选择将其中的房子重新涂上任何一种颜色,或者保持原来的颜色不变。小桥想知道小蓝至少要涂几天,才能让整个走廊变得美丽。输入两行,第一行一个整数表示测试用例的数量每个测试用例的第一行包含两个整数n和k第二行包含n个整数,分别表示每个房子最初的颜色。
2024-01-25 14:09:13
435
原创 挑选字串(Lanqiao OJ 1621)
首先开一个数组存储这n个数。遍历数组进行赋值。使用双指针i,j表示区间,通过for循环对双指针区间进行移动。①当i > j ,即左指针的值大于右指针的值,显然这个区间不合法。或者右指针有向右移动的空间并且不满足条件k时,即(j + 1 <= n && cnt < k)。此时++j,使右指针向右移动,并且判断该值是否大于m,若满足条件就返回true,强制转换为1,使cnt+1。使 cnt += (a[++j] >= m);
2024-01-23 14:35:06
332
1
原创 前缀和与差分
①首先输入n,表示原始数组中有n个元素。遍历原始数组使其初始化。②定义一个差分数组表示相邻两个元素之间的差值。通过遍历给差分数组赋值。③然后对差分数组进行m次修改。diff[l]+=x;经这两部操作,对目标区间完成了修改操作。④随后通过差分数组,对原始数组进行更新。⑤最后,对更新后的数组求前缀和。即prefix[i]=prefix[i-1]+a[i];
2024-01-22 23:45:18
358
原创 找到最多的数(Lanqiao OJ 3227 )
题解方法通过声明一个,用于统计每个元素出现的次数。然后,从输入读取了两个整数n和m,分别表示矩阵的行数和列数。随后,通过一个循环,从输入读取了n * m个数,将各个数字及其出现次数记录到mp中。其中,mp[x]++是对map容器中关键字为a的值进行递增操作。在这个程序中,mp是一个类型的变量,它将整数作为关键字,对应的值是该整数在输入中出现的次数。当我们执行mp[x]++时,它的作用是:如果x在mp中不存在,那么会将a添加到mp中,并将它的初始值设置为0,然后进行递增操作,使其变为1。如果x在mp。
2024-01-20 21:31:52
399
原创 快递分拣(Lanqiao OJ 1531)
是为了取消 C++ 的输入输出流与 C 语言标准输入输出流的同步,cin.tie(0)和是为了取消输入流和输出流之间的关联,这些操作可以提高输入输出的性能。首先,代码中使用了 map 这个数据结构,它将城市名称映射为对应的快递地址列表。城市就是key,一个城市对应着一组 vector,通过来存储该城市的所有快递地址。通过循环读取输入信息,将每个城市和对应的快递地址存储到map中。在存储过程中,如果该城市之前没有出现过,则将它添加到citys向量中,以便后续按照城市的顺序输出。
2024-01-19 16:39:23
517
原创 合并果子(lanqiao OJ 741)
例如有3种果子,数目依次为1,2,9.可以先将1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为12。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。在主循环中,每一次迭代从优先队列中取出两个最小的数,将它们相加得到一个新的数,将这个新的数加入到优先队列中,并且将合并的代价累加到。
2024-01-19 13:00:02
343
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人