- 博客(6)
- 收藏
- 关注
原创 FZU ACM 寒假(6)
如果是,那么第i个人如果是诚实的,那么a[i]应该等于左边的骗子数,也就是a[i-2] + 1。对于每个美味值i,遍历可能的蛋糕数量j,更新dp[i][j] :如果当前美味值的蛋糕数量为0,则直接继承前一个状态dp[i-1][j];如果选择当前美味值的蛋糕,则需要满足j + count[i] <= n/2,并更新dp[i][j + count[i]]为dp[i-1][j];同时,考虑不选择当前美味值的蛋糕,更新dp[i][j]为dp[i-1][j] + 1。用一个动态规划数组dp来记录最大价值。
2025-02-16 23:11:31
621
原创 FZU ACM寒假集训(5)
如果当前列和对角线未被占用,则标记为占用,并递归尝试下一行。,则直接返回,避免不必要的计算。如果当前选择的饲料组合满足所有维他命的需求,则更新最小种类数。如果相邻位置的高度与当前高度相同且未被访问过,则将其加入队列并标记为已访问。然后,它会检查所有相邻的位置,如果相邻位置的高度大于当前高度,则设置。然后,它遍历整个地图,对于每个未访问的位置,调用。遍历四个方向,对于每个方向,计算新的位置。如果当前路径无法继续,则回溯,尝试其他列。如果新的位置在矩阵范围内,且未被访问过,且。如果新的坐标在矩阵范围内,并且。
2025-02-13 22:03:30
642
原创 FZU ACM寒假集训(4)
如果 k = 1 ,输出 1。如果 b 和 19260817 互质,那么 b 在模 19260817 下有逆元,可以通过逆元来解这个方程。如果不互质,需要检查 a 是否能被 b 和 19260817 的最大公约数整除,否则无解。具体来说,对于每个素数 p ,找出它在区间内的第一个倍数,然后每隔 p 个数标记为合数。最后,区间内未被标记为合数的数就是素数,统计这些数的个数。最小互质区间是指两个端点相差为1且都不为1的区间。对于给定的区间 [l, r] ,我们需要计算其中包含多少这样的最小互质区间。
2025-02-10 23:47:26
205
原创 FZU ACM寒假集训(3)
对于每头牛,我先弹出栈中所有身高小于等于当前牛的牛,因为这些牛不可能是当前牛的“仰望对象”。如果栈不为空,栈顶的就是当前牛的“仰望对象”。最后,将当前牛的索引压入栈中。首先,读取果子堆数量和重量,存入优先队列。然后,循环合并最小的两堆,计算合并成本并加到总成本中,将新堆重新放入队列。直接暴力法时间复杂度太高,尤其是当 N 和 M 都很大的时候。于是,我考虑了一些优化的方法,就是文档里面的内容,通过稀疏表预处理内容,使最后复杂度变成O(1)每报一步,如果当前的人还在圈中,步数 steps 就加一。
2025-02-07 22:05:56
227
原创 FZU ACM寒假集训(2)
因此,关键在于确保在任何长度为青蛙最大跳跃距离的河段内,有足够的石头高度总和,以支持青蛙通过两次跳跃。如果青蛙可以安全通过,说明当前的跳跃能力是合适的,可以尝试进一步减少跳跃能力;反之,则需要增加跳跃能力。为了找到抄写页数最多的那个人的上限( MID ),因为这决定了整体时间,我们采用二分查找的方法。这道题我先尝试用二分法做,然后意识到有必要对mid左右的数字都检查以防不同位置但相等的数字被遗漏,我向左遍历又向右遍历,结果第三个测试点超时,没办法只能用undermined_map做了。
2025-01-26 22:14:47
220
原创 FZU ACM寒假集训(1)
第七题直接模拟时间复杂度高,故不妨直接创建两个数组记录横纵坐标,然后按要求用swap交换坐标,最后利用arr [ a[] ][ b[] ]输出结果。然后创建含大小为26数组,从a到z遍历,同时将字符串中每个字母最后变成的字母赋值给变化前的字母对应的数组里,最后利用ascll码输出相应的字母。第四题找字母出现的次数利用ascll和数组记录字母出现的次数,同时务必注意字母可能超出需求。第五题利用(x+1)/2算出一半的个数,比我一开始用浮点方便得多。第六题创建结构体,记录替换前的字母和替换后的字母。
2025-01-23 20:15:03
495
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅