
二分/三分
Aurora141592
这个作者很懒,什么都没留下…
展开
-
[二分]四个数和为0(标记)
https://www.51nod.com/Challenge/Problem.html#!#problemId=1267 如果每个数可以选不止一次那太简单了,但是如果只能选一次呢,就很麻烦,就必须保存每一个sum来自哪两个位置的数,找到和为0的两个sum还要判断是否来自四个不同的点,要把所有相等的sum都判断一次,可以使用lower_bound到upper_bound确定范围。 struct e{ int l, r, sum; }a[maxn * maxn]; int t[maxn]; bool原创 2021-01-05 13:22:34 · 146 阅读 · 0 评论 -
[三分]求凹凸函数最值
https://www.luogu.org/problemnew/show/P3382 二分用于单调函数, 三分用于凹凸函数. 三分就是把区间分成三份, 设左右端点为L和R, 有两种分法。 第一种是区间内的第一个点lmid = (L + R) / 2, 第二个点rmid = (lmid + R) / 2。 第二种是lmid = l + (r – l) / 3, rmid = l + 2 * (r – l) / 3。 然后判断函数在这两个位置的值,根据实际情况缩小答案的区间。 比如求凸函数最大值,如果f(lm原创 2021-01-04 10:33:58 · 901 阅读 · 0 评论 -
[二分]最小化最大值
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1128 注意答案的二分性质,必须要满足在满足给定条件的所有情况的时候都满足要求才能更新ans。 #include<bits/stdc++.h> using namespace std; typedef long long ll; inline ll in() { ll res=0,p=1; char c=getchar(); while(c<原创 2021-01-04 10:32:39 · 121 阅读 · 0 评论