合集-二分

摘要:原题链接 题解 最大值最小 \(\to\) 二分可行性判断: 二分间断值 \(len\ \to\) 如果原序列 \(a_i-a_{i-1}>len\) \(\to\) 双指针判断有没有 \(b+f\) 使得 \(a_i-len<=b+f<=a_{i-1}+len\) 由于只能使用一次,所以若使用两次 阅读全文
posted @ 2024-03-14 20:36 纯粹的 阅读(44) 评论(0) 推荐(0)
摘要:原题链接 题解 最大值最小化,想到了二分 而对于一个二分到的 \(\mathscr{maxlen}\) 而言,如何判断是否存在一种分法使得最大值不大于它? 对于一个给定的二分值而言,要想成功有两个约束条件,一个是间断值不超过 \(\mathscr{maxlen}\) ,一个是选中值之和不超过 \(\ 阅读全文
posted @ 2024-03-15 16:42 纯粹的 阅读(29) 评论(0) 推荐(0)
摘要:原题链接 题解 1.二分+dp code #include<bits/stdc++.h> using namespace std; string name[1000005],dp[1000005],st[1000005]; int main() { string s; cin>>s; int cnt 阅读全文
posted @ 2024-03-30 22:02 纯粹的 阅读(78) 评论(0) 推荐(0)
摘要:原题链接 题解 给定一个数组,你知道怎么计算最终答案吗? 设数组大小为 \(n\),数组中的最小值为 \(x\),大于最小值的个数为 \(p\) 则 \(ans=n*x-(n-1)+p\),\(p\in[0,n-1]\) 所以 \(x\) 越大,\(ans\) 越大 二分的前置条件有了 二分 \(x 阅读全文
posted @ 2024-05-14 19:16 纯粹的 阅读(22) 评论(0) 推荐(0)
摘要:原题链接 题解 1.由于一回合可以使用多次技能,所以直接二分回合数即可 2.回合数最多为 \(4^{10}\) code #include<bits/stdc++.h> using namespace std; #define ll long long ll a[200005],c[200005]; 阅读全文
posted @ 2024-06-13 19:11 纯粹的 阅读(101) 评论(0) 推荐(0)
摘要:原题链接 题解 最大值,要么是原本就有,要么是一段向左加一的区间的左端点的值(经过操作之后) 因此,我们可以枚举每一个 \(a_i\) 能达到的最大值(作为左端点),这样的最大值越大,所需要的 \(k\) 越大,因此我们可以二分该最大值,然后查看能否在给定的 \(k\) 内得到 code #incl 阅读全文
posted @ 2024-07-17 09:39 纯粹的 阅读(23) 评论(0) 推荐(0)
摘要:原题链接 获取题意 1.只能传送一次。 2.走树边没有限制。 3.只能传送至非相邻节点 4.路径一定是如下形式: \(S\to x \to T\) 其中要么 \(x\to T\) 传送要么 \(S\to x\) 传送 \(S\to x \to y \to T\) 其中 \(x\to y\) 传送 \ 阅读全文
posted @ 2024-08-07 15:34 纯粹的 阅读(59) 评论(0) 推荐(0)