- 博客(275)
- 收藏
- 关注
原创 选题(dfs)
注意到“3种”,可以用map来存储,判断m.size()种类 >=3 ,如果当前组合符合所有条件,就把答案加 1。:统计当前选择中不同难度题目的个数。还有回溯时为零的数erase删除。:当前选题中的最小和最大难度。:当前已选题的难度总和。:当前处理到第几道题。
2025-04-11 20:45:59
268
原创 新一的宝藏搜寻加强版(dp二进制优化)
,直到把所有数量 c 都用完为止。(如果是一般的 k++,就会超时)这表示我们从 1 开始,每次乘 2(用二进制优化枚举多个物品数量。件物品从总数里扣掉。
2025-04-11 20:13:20
223
原创 走多远(拓扑排序,dp)
这句话表示:"v 的最长路径 = max(当前的 v 的值, 从 u 走来加一条边的值)"v 的入度减 1(因为它的一个前驱 u 已经处理完了):如果入度变成 0,说明。在有向无环图(DAG)中计算从入度为 0 的点出发的最长路径长度。可以把 v 加进队列,表示继续遍历它指向的下一个节点。
2025-04-11 00:08:39
317
原创 P11642 【MX-X8-T1】「TAOI-3」幸运草(贪心)
Anzu 有一个正整数数列 a1,…,an 和一个整数 x。她可以进行至多一次操作,选择一对正整数 1≤l≤r≤n,然后对于所有 l≤i≤r 的正整数 i 让 ai 变成 x。现在她想要知道,在这之后,数列里所有数的和最大是多少。中找一个最大子段和,这段就是你替换后能获得的最大“增益”。第二行,n 个正整数 a1,…终将改变之物,与永不改变之物。第一行,两个非负整数 n,x。仅一行,一个正整数,表示答案。那是,童年的约定——
2025-04-10 11:17:37
326
原创 P1115 最大子段和(贪心)
给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。第二行有 n 个整数,第 i 个整数表示序列的第 i 个数字 ai。,说明当前子数组的和变小了,应该从当前元素开始一个新的子数组,第一行是一个整数,表示序列的长度 n。对于每一个元素,更新当前子数组和。输出一行一个整数表示答案。,继续累加当前子数组和。
2025-04-10 10:55:32
170
原创 B4158 [BCSP-X 2024 12 月小学高年级组] 质数补全(dfs)
接下来 t 行,每行 1 个字符串 s 代表 Alice 的数字,仅包含数字或者 ∗,并且保证首位不是 ∗ 或者 0。例如纸条上的数字为 1∗(∗ 代表看不清的地方),那么这个质数有可能为 11,13,17,19,其中最小的为 11。:当 i == n(字符串填充完成),将字符串转为数字,检查是否为质数,并更新最小答案 ans。请你帮助 Alice 补全这个质数,若有多解输出数值最小的,若无解输出 −1。输出 t 行,每行 1 个整数代表最小可能的质数,或者 −1 代表无解。
2025-04-09 20:49:21
358
原创 B3693 数列前缀和 4(二维前缀和)
后面用前缀和公式来计算这个区域的和 a[x][y] + a[u-1][v-1] - a[x][v-1] - a[u-1][y]库的同步,这样做的目的是加速输入输出操作,尤其是在大规模数据处理时非常有用。通过动态规划的方式计算前缀和,时间复杂度为 O(n * m)是存储矩阵数据的二维数组,用来暂时存储输入的每个元素。画个图很容易推出这个公式。二维前缀和计算方法。
2025-04-09 15:52:53
327
原创 P9241 [蓝桥杯 2023 省 B] 飞机降落(dfs)
其中第 i 架飞机在 Ti 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 Di 个单位时间,即它最早可以于 Ti 时刻开始降落,最晩可以于 Ti+Di 时刻开始降落。更新时间:max(a[j], cur) + c[j](飞机降落不能早于 a[j],且需要 c[j] 的持续时间)一架飞机降落完毕时,另一架飞机可以立即在同一时刻开始降落,但是不能在前一架飞机完成降落前开始降落。检查当前时间 cur 是否小于等于飞机 j 的截止时间 (a[j] + b[j])回溯并尝试其他可能性。
2025-04-09 13:05:22
402
原创 P2040 打开所有的灯
这个灯很奇(fan)怪(ren),点一下就会将这个灯和其周围四盏灯的开关状态全部改变。pmshz在玩一个益(ruo)智(zhi)的小游戏,目的是打开九盏灯所有的灯,这样的游戏难倒了pmshz。九个数字,3*3的格式输入,每两个数字中间只有一个空格,表示灯初始的开关状态。(0表示关,1表示开)m & (1 << pos):检查 m 的第 pos 位是否为 1,若是则点击。a[3][3] 保存初始状态,t[3][3] 用于模拟点击后的状态。flip(pos / 3, pos % 3, t):翻转对应位置。
2025-04-08 20:29:50
473
原创 P1473 [USACO2.3] 零的数列 Zero Sum(dfs)
计算该表达式的结果并判断其值是否为 0。请你写一个程序找出所有产生和为零的长度为N的数列。请考虑一个由 1 到 N 的数字组成的递增数列:1,2,3,…),来将每一对数字组合在一起(请不要在第一个数字前插入符号)。按照 ASCI I码的顺序,输出所有在每对数字间插入。递归终止条件:i > n,检查表达式结果是否为 0。i 表示当前处理的数字,s 是当前表达式。单独的一行表示整数 N(3≤N≤9)。(空格) 后能得到结果为零的数列。(空格) 表示空白(例如。
2025-04-08 15:50:39
345
原创 P3131 [USACO16JAN] Subsequences Summing to Sevens S(前缀和)
Farmer John 的 N 头奶牛站成一排,这是它们时不时会做的事情。每头奶牛都有一个独特的整数 ID 编号,以便 Farmer John 能够区分它们。Farmer John 希望为一组连续的奶牛拍照,但由于童年时与数字 1…6 相关的创伤事件,他只希望拍摄一组奶牛,如果它们的 ID 加起来是 7 的倍数。接下来的 N 行每行包含一头奶牛的整数 ID(所有 ID 都在 0…请输出 ID 之和为 7 的倍数的最大连续奶牛组中的奶牛数量。请帮助 Farmer John 确定他可以拍摄的最大奶牛组的大小。
2025-04-08 00:18:22
464
原创 P1135 奇怪的电梯(BFS)
呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第 i 层楼(1≤i≤N)上有一个数字 Ki(0≤Ki≤N)。电梯只有四个按钮:开,关,上,下。当然,如果不能满足要求,相应的按钮就会失灵。例如: 3,3,1,2,5 代表了 Ki(K1=3,K2=3,……在 1 楼,按“上”可以到 4 楼,按“下”是不起作用的,因为没有 −2 楼。第一行为三个用空格隔开的正整数,表示 N,A,B(1≤N≤200,1≤A,B≤N)。一行,即最少按键次数,若无法到达,则输出。
2025-04-07 23:30:32
275
原创 健身【算法赛】(dp)
将 a[0] = 0 和 a[q+1] = n+1 作为虚拟边界,用于划分时间段。遍历每个区间,len = a[i] - a[i-1] - 1,表示当前区间可用天数。ans += f[len] 将每个区间的最大增益累加到总答案。每个区间独立计算最大增益,然后求和。
2025-04-07 16:58:57
258
原创 分组(二分查找)
if (f(mid)) 如果 mid 可行(组数 ≤ k),说明极差可以更小,更新 r = mid - 1。r = a[n] - a[1]:极差最大为整个数组的最大值减最小值。判断以最大极差 x 是否能将 n 个元素分成不超过 k 组。mid = l + (r - l) / 2:计算中间值。否则,极差太小,更新 l = mid + 1。l = 0:极差最小可能为 0(每组一人时)循环结束,此时 l 是最小的可行极差。检查函数 f(int x)
2025-04-06 23:23:41
207
原创 P1466 [USACO2.2] 集合 Subset Sums(dp)
对于从 1∼n 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。{3} 和 {1,2} 是唯一一种分法(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数)f[j]+=f[j−i]:选 i 时,方案数加上不选 i 时和为 j−i 的方案数。f[0]=1:不选任何数,和为 0 的方案数为 1。{1,6,7} 和 {2,3,4,5}{2,5,7} 和 {1,3,4,6}{3,4,7} 和 {1,2,5,6}{1,2,4,7} 和 {3,5,6}s&1 检查 s 是否为奇数。
2025-04-06 20:16:06
181
原创 P1734 最大约数和(dp)
选取和不超过 S 的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。取数字 4 和 6,可以得到最大值 (1+2)+(1+2+3)=9。对于 100% 的数据,1≤S≤1000。的数字组合时,所能获得的最大约数和。的情况,是否选择当前的数字。,表示每次尝试选一个数字。的所有真约数(不包括。输入一个正整数 S。输出最大的约数之和。
2025-04-06 19:44:39
190
原创 P1570 KC 喝咖啡(二分)
对 R 进行二分搜索,每次检查是否存在 m 个调料的 vi−R⋅ci之和 ≥ 0。数组进行排序,按从大到小的顺序排列。是二分法的搜索区间,表示单位美味度(美味度 / 时间)的大致范围。目标转化为找到最大的 R,使得至少存在 m 个调料满足上述不等式。:这是对每种调料的调整,实际上是美味度和单位时间的差值。计算所有调料的 vi−R⋅ci,取前 m 个的值求和。:计算当前区间中间的单位美味度,它是每次二分的关键值。个调料,使得单位时间美味度的和最大。,则说明当前的单位美味度。,说明当前的单位美味度。
2025-04-06 19:22:26
186
原创 P1678 烦恼的高考志愿(二分)
计算机竞赛小组的神牛 V 神终于结束了高考,然而作为班长的他还不能闲下来,班主任老 t 给了他一个艰巨的任务:帮同学找出最合理的大学填报方案。可是 v 神太忙了,身后还有一群小姑娘等着和他约会,于是他想到了同为计算机竞赛小组的你,请你帮他完成这个艰巨的任务。根据 n 位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小(可高可低,毕竟是估分嘛),这个最小值为不满意度。对于 100% 的数据,1≤n,m≤100000,估分和录取线 ≤1000000 且均为非负整数。
2025-04-06 16:12:28
237
原创 P1258 小车问题(二分)
甲、乙两人同时从 A 地出发要尽快同时赶到 B 地。已知甲、乙两人的步行速度一样,且小于车的速度。仅一行,三个实数,分别表示 AB 两地的距离 s,人的步行速度 a,车的速度 b。y:乙的总时间:前面步行的时间 t1+t2,加上后面坐车的时间。: 车从 mid 返回,途中乙也在走,求他们相遇所需的时间。: 甲的总时间:前面坐车的时间 t1,加上后面步行的时间。两人同时到达 B 地需要的最短时间,保留 6 位小数。为当前甲坐车的目标点,车先带甲走到。: 甲坐车从 A 到 mid 所需时间。
2025-04-06 15:20:26
135
原创 P1024 [NOIP 2001 提高组] 一元三次方程求解(二分)
给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在 −100 至 100 之间),且根与根之差的绝对值 ≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 2 位。提示:记方程 f(x)=0,若存在 2 个数 x1 和 x2,且 x1<x2,f(x1)×f(x2)<0,则在 (x1,x2) 之间一定有一个根。如果 f(i)⋅f(i+1)<0(符号相反)或 f(i)=0 端点为根),则查找根。
2025-04-06 01:16:33
313
原创 P1883 【模板】三分 | 函数
fn(x)(均形如 ax2+bx+c),设 F(x)=max{f1(x),f2(x),...,fn(x)},求 F(x) 在区间 [0,1000] 上的最小值。每组数据第一行一个正整数 n,接着 n 行,每行 3 个整数 a,b,c,用来表示每个二次函数的 3 个系数,注意二次函数有可能退化成一次。每组数据输出一行,表示 F(x) 的在区间 [0,1000] 上的最小值。对于 100% 的数据,T<10, n≤104,0≤a≤100,∣b∣≤5×103,∣c∣≤5×103。,在接近正确解的时候,
2025-04-05 21:27:28
479
原创 P1577 切绳子(二分)
有 N 条绳子,它们的长度分别为 Li。如果从它们中切割出 K 条长度相同的绳子,这 K 条绳子每条最长能有多长?答案保留到小数点后 2 位(直接舍掉 2 位后的小数)。切割后每条绳子的最大长度。答案与标准答案误差不超过 0.01 或者相对误差不超过 1% 即可通过。第一行两个整数 N 和 K,接下来 N 行,描述了每条绳子的长度 Li。(两个边界非常接近)时,就说明我们找到了最接近的最大可能长度。把最终整数结果除以100,保留两位小数。检查能不能把每条绳子切成长度为。
2025-04-05 19:43:58
718
原创 P1182 数列分段 Section II(二分)
对于给定的一个长度为 N 的正整数数列 A1∼N,现要将其分成 M(M≤N)段,并要求每段连续,且每段和的最大值最小。所以可以得到要将数列 4 2 4 5 1 要分成 3 段,每段和的最大值最小为 6。第一段和为 6,第 2 段和为 9,第 3 段和为 1,和最大值为 9。第一段和为 4,第 2 段和为 6,第 3 段和为 6,和最大值为 6。检查如果每份和最多是 x,数组会被分成几份,返回份数是否 ≥ m。r += a[i]:r 是数组总和(答案上限)。一个正整数,即每段和最大值最小为多少。
2025-04-05 18:49:00
365
原创 P5194 [USACO05DEC] Scales S(DFS)
并且,这一行中从第 3 个砝码开始,每个砝码的质量至少等于前面两个砝码(也就是质量比它小的砝码中质量最大的两个)的质量的和。每次称牛时,他都把某头奶牛安置在天平的某一边,然后往天平另一边加砝码,直到天平平衡,于是此时砝码的总质量就是牛的质量(约翰不能把砝码放到奶牛的那边,因为奶牛不喜欢称体重,每当约翰把砝码放到她的蹄子底下,她就会尝试把砝码踢到约翰脸上)。现在约翰告诉你每个砝码的质量,以及天平能承受的最大质量,你的任务是选出一些砝码,使它们的质量和在不压坏天平的前提下是所有组合中最大的。
2025-04-04 22:13:12
475
原创 N皇后问题(dfs回溯)
每次放置时,检查当前放置的皇后是否会与已放置的皇后发生冲突(检查列、主对角线、副对角线)如果到达了棋盘的最后一行,且所有皇后都成功放置,则记录一种有效的解。: 用于标记每一条副对角线是否已被占用。回溯“恢复状态”,撤销当前的选择,并尝试其他可能的选择。通过这三个数组,可以有效地判断在放置皇后时,某个位置。是否会与其他皇后发生冲突,确保解法的有效性。表示该位置位于副对角线的起点(即。位置上的皇后是否在该主对角线上。位置上的皇后是否在该副对角线上。所在的副对角线的编号。对于c[i + j]
2025-04-03 17:17:51
332
原创 古怪的刷子(暴力搜索)
if (m & (1 << j) == 0) 也可以。:用于确定翻转的五个位置(当前砖块及其上下左右)。为什么要遍历到(1 << n),由于第一行有。(白色),说明上面的翻转方案不合适,返回。:存储原始输入的砖块颜色,:用于模拟翻转的临时矩阵。的位置代表需要翻转的列。计算当前翻转方案的步数。每一块,所以总共 2^n。
2025-04-01 17:27:07
234
原创 石子合并(区间dp)
合并 [i, k] 和 [k+1, j] 的最小代价 加上额外代价 sum[j] - sum[i-1],从子问题推导出 dp[i][j]sum[j] - sum[i-1]:区间 [i, j] 的石子总数,作为合并两部分时的额外代价。假设我们要合并区间 [i, j](第 i 堆到第 j 堆),最后一步一定是将两部分合并。dp[k+1][j]:合并 [k+1, j] 的最小代价。通过分割点 k,我们可以将 [i, j] 分成两部分。dp[i][k]:合并 [i, k] 的最小代价。
2025-03-26 21:08:09
382
原创 MAX最值差(单调队列)
对于每个位置 i,计算当前窗口的最大值 a[q1.front()] 和最小值 a[q2.front()] 的差值。窗口大小最大为 k,通过队列维护窗口内的元素,并在窗口滑动时移除超出范围的元素。新元素 a[i] 加入时,移除队尾所有小于 a[i] 的元素。新元素 a[i] 加入时,移除队尾所有大于 a[i] 的元素。如果队首元素超出窗口范围(i - k),移除队首。q1:单调递减队列,存储窗口内可能的。队首始终是当前窗口的最大值。q2:单调递增队列,存储窗口内可能的。队首始终是当前窗口的最小值。
2025-03-26 17:47:50
216
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人