区间最大值
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
长度为 n 的数组 a,下标从1开始,定义 a[i]=n \% ia[i]=n%i
有 m 组询问 {L,R},求 max_{i=L}^{R} a[i]maxi=LRa[i]
输入描述:
第一行两个正整数 n, m
接下来 m 行,每行两个正整数 L, R
n \leq 1e8n≤1e8,m \leq 1e4m≤1e4,1 \leq L \leq R \leq n1≤L≤R≤n
输出描述:
输出 m 行,每行一个整数表示询问结果
示例1
输入
7 3 1 1 1 4 5 6
输出
0 3 2
这个题真的让我好难受啊 mle又段错误又tle的 看题解还愣了好久 太菜了TT
ac题解
#include<bits/stdc++.h>
using namespace std;
int n, m;
int main(){
cin >> n >> m;
while(m --){
int l, r;
cin >> l >> r;
int p = n / r;//可以确定右端点的位置
int q = n / l;
if(p == q) cout << n % l << endl;
else cout << n % ((n / (p + 1)) + 1) << endl;
}
}