【链接】 我是链接,点我呀:)
【题意】
给你一个规则,让你知道第i根萝卜的高度为si = A+(i-1)*B
现在给你n个询问;
每次询问给你一个固定的起点l;
让你找一个最大的右端点r;
使得l..r这一段能够在t次"m吃操作"内被吃完.
【题解】
如果l..r里面的最大值大于t了;则无解
最大值小于等于t的话.
每次可以取m个。
然后可以取t次。
也就是说
这一段里面的和<=m*t;
只要A+(i-1)*B大于1e6了就停下来
最坏情况就是A和B都为1
写个rmq+二分就好
【代码】
#include <bits/stdc++.h>
using namespace std;
#define ll long longconst int N = 1e6+10;ll a[N+100],pre[N+100];
ll A,B,Q;
int n;const int MAXL = 20;//log2�������