链接
题目描述
思路
答案必然是最大数的某个约数,那就从大到小枚举
然后看能否分成大于等于k块
判断考虑分治
对于一个区间最大值x,如果它是约数的倍数,那么就直接考虑左右分
如果本身不是,那就考虑找一个左右分块合并进去
代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
const int N = 1e6 + 100,M = 1010;
int n, m, pl, maxn, k, a[N], s[N];
int find(int l,int r