
二分
文章平均质量分 60
Selvaggia
这个作者很懒,什么都没留下…
展开
-
1659.社交距离I(二分⭐假设牛栏之间的最小距离为x,看添加的牛的数量是否可以大于等于2)
求添加两头牛之后 牛栏之间的最小距离 最小,就假设牛栏之间的最小距离为x,看添加的牛的数量是否可以大于等于2。二分+判断 比条件分析要OK得多,后者很容易一团糨糊。尝试条件判断分类讨论,非常凌乱+过不了。也可以用一个数组记录每头奶牛的位置,原创 2023-05-08 18:52:12 · 97 阅读 · 0 评论 -
蓝桥杯之二分
对于左端点极小右端点极大的长度很大的区间a,应该合理加以利用,移动到右侧最近的位置,防止左端点更大右端点更小的区间b,因为不合理的移动(如果按左端点排序,b区间后于a区间移动,b区间移动某种程度上需要跨过a区间的长度距离,到达a的右端点才能找到未被覆盖的点再进行拼接)而导致的移动位移增大,不管用哪种贪心方法永远是要找到最左的未被覆盖的点进行拼接,其清扫路径的本质都是重复两次 a 到 b,b 到 c,c 到 d 的过程,花费时间为 6,由此,假设某个机器人清扫的格子范围为 l,原创 2023-03-12 17:01:40 · 303 阅读 · 0 评论 -
杨辉三角规律
图片来自acwing#include <bits/stdc++.h>/*#include <iostream>#include <algorithm>#include <set>*/#define int long long using namespace std;const int N=20;int a[N][N];void print(){ for(int i=0;i<=N;i++)a[i][0]=1;//第0列全1 fo..原创 2022-04-07 23:07:15 · 1388 阅读 · 1 评论 -
离散化(从很大的下标范围映射到很小的数量范围)
离散化保序的离散化,小的元素依旧在前面能用到的元素个数非常少,例如1e5数量级但是元素的值域非常大,比如1e9,有些题目要以元素的值作为下标来做比如,累计某个元素出现的次数,vis[a[i]]++;把值域,这个序列映射到1e5范围内,把a[i]这个值映射到1~1e5这些下标int find(int x){//alls数组里装的就是待离散化映射到更小区间段的下标 //x就是一个待离散化的下标 int l=0; int r=alls.size()-1; while(l<r){ i原创 2022-03-23 22:23:03 · 618 阅读 · 0 评论 -
1101: 花费(二分函数的参数和返回值 不要忘记换成long long
题目链接就是二分,第8.0版本的wa代码之后,一通把int换成longlong好家伙,search函数的参数和返回值忘记换了,爆了int统统搞成long long#include<iostream>#include<string.h>#include <stdlib.h>//malloc using namespace std;typedef long long int ll;int n,m;ll a[100005];ll sum[100005];原创 2022-01-25 14:43:59 · 332 阅读 · 0 评论 -
二分算法(放在一块看看能不能看出啥)
03:矩形分割理解题目还挺重要的 ,不然一直在那儿白费脑力描述平面上有一个大矩形,其左下角坐标(0,0),右上角坐标(R,R)。大矩形内部包含一些小矩形,小矩形都平行于坐标轴且互不重叠。所有矩形的顶点都是整点。要求画一根平行于y轴的直线x=k(k是整数) ,使得这些小矩形落在直线左边的面积必须大于等于落在右边的面积,且两边面积之差最小。并且,要使得大矩形在直线左边的的面积尽可能大。注意:若直线穿过一个小矩形,将会把它切成两个部分,分属左右两侧。一开始看题,既要左右面积差值最小又要大矩形左侧面积最大,原创 2021-10-25 22:52:00 · 895 阅读 · 1 评论