昨天刷一道单调队列的题目,被二分卡住了,所以打算认真刷一波二分,必须把细节都搞透,这是T1;
题目大意:
1 在n个数字中,选择m个,要求彼此间隔相同,并且尽可能远;
解题思路:经典二分答案
1 对于数列进行排序:
2 二分答案:用贪心来判断合法与否;
3 因为二分答案一般都是有极值的,所以比较简单,后面的二分查找会比较恶心
上代码:
#include<bits/stdc++.h>
using namespace std;
const int mx=1e5+5;
int a[mx],n,m;
void so(int l,int r)//简单快排
{
int x=l,y=r,mid=a[(l+r)/2];
while(x<=y)
{
while(a[x]<mid) x++;
while(a[y]>mid) y--;
if(x<=y)
{
int t=a[x]; a[x]=a[y]; a[y]=t; x+&