- 博客(18)
- 收藏
- 关注
原创 奶牛晒太阳(贪心)
我们根据点落下的位置,可以把线段分成三个部分,第一个部分落下的点只能与线段1相匹配,第二部分的点能与两个线段分别匹配,第三部分的点只能与线段2匹配。所以对于只能给线段1匹配的点,我们优先给线段1匹配,当不存在只能给线段1的点,只存在第二部分的点时,我们也是优先给线段1匹配,因为线段2的右端点更大有更多的匹配机会。由于我们已经将点从小到大排序,因此如果存在第一部分的点时,我们会优先将第一部分的点与线段1匹配,不存在第一部分的点时我们再将第二部分的点与线段1匹配。每种的固定的阳光强度a和数量n也给出来了。
2025-02-08 08:44:50
203
原创 动态规划经典––多重背包
我们可以参考2进制的方法拆分,即将一个数拆成1,2,4,8...假设有一个数13,那么我们就拆成1,2,4,6这样一来,任何一个数都能由1,2,4,6的组合得来,例如:1+2=3,1+4=5,1+6=7等等。多重背包与0/1背包的区别是多重背包在给出物品的时候还给出来物品的一个属性即数量。一种简单的实现方式就是把多重背包当做0/1背包去做,即把各个相同的物品分开。例如一个物品的数量是3,就把他按照三件物品去做。在多重背包中,我们除了将每个物品都单独的对待,还有什么其他的方法吗?
2025-02-05 09:45:27
295
原创 蓝桥杯数论通关系列(四)拓展欧几里得算法
给定a,b均为整数,一定存在一组整数x,y使得a,b满足a*x + b*y = gcd(a,b) = c。而拓展欧几里得算法就是求出这组整数(x,y)的算法。
2024-10-13 23:26:06
519
1
原创 蓝桥杯数论通关系列(二)唯一分解定理与约数定理
唯一分解定理的内容就是任何一个自然数都可以分解成有限个素数相乘,并且20可以拆成5*4,而5是素数4不是,那么4就可以继续拆分成2*2,用唯一分解定理表示出来就是20=5^1 * 2^2。
2024-09-27 21:32:18
320
原创 蓝桥杯数论通关系列(一)LCM与GCD
如果理解有困难可以先看这篇文章:【数论中非常非常基础的知识 - 优快云 App】LCM,即最小公倍数的计算。GCD,即最大公约数的计算。LCM与GCD可以称为数论中最重要,最基础的算法,可以称之为数论的根基。其中,GCD又要更重要一些,LCM基本都可以通过GCD得到,因此,本文主要讲述GCD算法。
2024-09-23 18:46:17
568
原创 差分数组及其应用
假设a数组是原数组,那么i位置的差分定义为X[i] = a[i] - a[i - 1];即i位置的差分定义为该位置的数减去前一个数。特别的,第一个位置的差分数组等于原数组。由于差分数组可以进行快速的O(1)区间修改,但如果要查询的话则要进行一遍O(n)复杂度的前缀和操作,因此适用于多次修改偶尔查询的情况。
2024-09-16 15:48:48
313
1
原创 动态规划经典问题--01背包
给定一个承重为V的背包和数量为n的物品,我们用重量和价值的二元组描述一个物品,第i种物品表示为(vi,wi),问背包物品不超重的情况下,得到的最大价值是多少。
2024-09-10 11:51:44
377
原创 前缀和进阶--树状数组极其应用
如果c[i]是一个树状数组,那么c[i]存储的值就是i向前lowbit(i)个数的和。与前缀和的区别在于前缀和s[i]是存储的前i个数的和。树状数组相比于前缀和数组牺牲获取区间和值的速度,换来了单点修改的速度,总的来说是值得的。
2024-09-09 18:42:57
439
1
原创 天梯赛L2-017人以群分(分数25)
/当n为奇数,假设是五,那么mid是二,恰好形成了二三的分组,高活跃度比低活跃度多一人。i++){//从一开始方便后面统计两拨人的数量。//排序注意sort是左闭右开。
2024-06-12 22:21:32
664
原创 天梯赛l2-004这是二叉搜索树吗
void bulid1(int l1, int r1, int l2, int r2){ //将二叉搜索树前序遍历转化成后序遍历的第一个函数,参数代表的是将前序遍历l1到r1的内容放到后序遍历的l2到r2之间。void bulid2(int l1, int r1, int l2, int r2){//将二叉搜索树前序遍历转化成后序遍历的第二个函数。//i代表的是第一个大于等于节点值的位置。//如果左右都是二叉搜索树。bool def1(int l, int r){ //判断是否是二叉搜索树的第一个函数。
2024-06-11 17:31:07
955
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人