摘要:
原题链接 题解 想象一条 有 n 个 1 的链,每个 1 之间一条边相连,每次操作最多破坏 k-1 条链 code #include<bits/stdc++.h> #define ll long long using namespace std; const ll N=114514; ll func 阅读全文
posted @ 2024-07-17 19:04
纯粹的
阅读(21)
评论(0)
推荐(0)
摘要:
原题链接 题解,先去考虑算法,再去解决时间复杂度的问题 假如一定要选 \(k_1\) 个,瓶子,那么我一定是选 \(sumb\) 尽量大(容量大),且 \(suma\) 也尽量大的(少搬运),那么对于相同的 \(sumb\) 选择 \(suma\) 更大的 所以三维dp,时间复杂度够 code #i 阅读全文
posted @ 2024-07-17 19:00
纯粹的
阅读(21)
评论(0)
推荐(0)
摘要:
原题链接 题意 选择 \(k\) 个数,使得 \(\min(\sum 2,\sum 5)\) 最大 实施 遍历n个数,每更新一个数,就更新所有的2的因子和5的因子,然后记录每种个数下,最小需要的k 但是会T 1.二维背包dp,使因数 5 和 2 达到某一值的最小选择个数,但是因子数量最多有 3600 阅读全文
posted @ 2024-07-17 18:07
纯粹的
阅读(14)
评论(0)
推荐(0)
摘要:
原题链接 题解 背包,但是同一行不同个数的物品放进背包里会导致重合,因此在遍历背包容量的时候一起遍历一行所有的个数,避免了冲突 code #include<bits/stdc++.h> #define ll long long using namespace std; int dp[10005]; 阅读全文
posted @ 2024-07-17 17:08
纯粹的
阅读(8)
评论(0)
推荐(0)
摘要:
原题链接 题解,没有思路的时候先想想暴力 1.观察观察再观察,对于每个计划而言,所完成的任务是唯一的,所以要完成任务 \(c\),相当于在能完成 \(c\) 的计划集合里,选择若干个计划,使得其总耗时最小,且完成的超过 100 2.这种包含两种属性限制的集合选择,不难想到背包,即相同耗时,记录完成度 阅读全文
posted @ 2024-07-17 14:32
纯粹的
阅读(27)
评论(0)
推荐(0)
摘要:
原题链接 题意 挑选一部分书放第一层,另一部分放第二层,要求第二层的宽度不超过第一层的长度, 实施 对于同一长度的第一层,第一层的宽度和越大,第二层宽度和越小,因此以长度为容量,宽度为价值跑背包数组 细节 滚动数组要注意更新的方向!! code #include<bits/stdc++.h> #de 阅读全文
posted @ 2024-07-17 13:58
纯粹的
阅读(14)
评论(0)
推荐(0)
摘要:
原题链接 题意简述 在序列中选择若干个数,使得其 \(gcd=1\) 且对应代价最小 实施 假设答案里,\(a_i\) 是最后一个选的,代表 \(i\) 前面存在某些数的组合的 \(gcd\) 与 \(a_i\) 互质 背包+状压 再遍历前面的数 \(j\) 和状态,代表选 \(j\) 时,数 \( 阅读全文
posted @ 2024-07-17 13:35
纯粹的
阅读(13)
评论(0)
推荐(0)
摘要:
原题链接 题解 最大值,要么是原本就有,要么是一段向左加一的区间的左端点的值(经过操作之后) 因此,我们可以枚举每一个 \(a_i\) 能达到的最大值(作为左端点),这样的最大值越大,所需要的 \(k\) 越大,因此我们可以二分该最大值,然后查看能否在给定的 \(k\) 内得到 code #incl 阅读全文
posted @ 2024-07-17 09:39
纯粹的
阅读(15)
评论(0)
推荐(0)

浙公网安备 33010602011771号