D-又放学辣(进阶)_牛客小白月赛80 (nowcoder.com)
思路:
求最大值的最小值,=》二分;
对于check函数,我们要统计cnt=(a[i]-t)的和(t为二分的量),如果cnt
时间复杂度为:n*log(n)*log(n)
代码:
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
思路二:
我们将b[x]代表大于x的总人数;
最开始有一次循环b[a[i]-1]++,表示大于a[i]的数+1;
第一次差分(从后往前):b[i]代表大于i的数有多少个;
第二次差分(从后往前):b[i]代表大于i总共有多少。
代码:
.#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include