这题目主要是要能想到使用二分。其实当你遇到看似无从下手的题目的时候,我们就可以从二分的角度去思考。这个题目就是二分枚举x,作为数组b里面的第m大的元素,我们可以考虑check a数组里面大于k个x的区间个数,如果这样的区间个数小于m就说明x取大了。具体见代码 #include typedef long long ll; using namespace std; ll n,m,k; int a[100010]; bool check(int mid) { a[0]=0; ll res=0; ll i=1,right=0,cnt=0; for(i=1;i<...