P3709 已经AC。
觉得是自己的傻逼错误,但是一下子没看出来,求助。
//Author: Velvet on Luogu(uid=443675)
#include <bits/stdc++.h>
#define int long long
#define mkpr make_pair
#define fi first
#define se second
using namespace std;
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
inline void write(int x){if (x < 0) x = ~x + 1, putchar('-');if (x > 9) write(x / 10);putchar(x % 10 + '0');}
inline void writeln(int x){write(x);putchar('\n');}
inline void writesp(int x){write(x);putchar(' ');}
inline int lowbit(int x) {return x&(-x);}
typedef pair<int,int> Pair;
const int N=200005;
int n,m,k,a[N],b[N],c[N],d[N],sq,cnt,ans[N];
struct ask{int id,l,r,k,bl;}q[N];
bool cmp(ask a,ask b){
return a.bl==b.bl?a.r<b.r:a.l<b.l;
}
void add(int x){
d[c[a[x]]]--;
d[++c[a[x]]]++;
cnt=max(cnt,c[a[x]]);
}
void del(int x){
d[c[a[x]]]--;
if(c[a[x]]==cnt&&d[c[a[x]]]==0) cnt--;
d[--c[a[x]]]++;
}
signed main(){
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>n>>m;sq=sqrt(n);
for(int i=1;i<=n;i++)
cin>>a[i],b[i]=a[i];
sort(b+1,b+n+1);
int tot=unique(b+1,b+n+1)-b-1;
for(int i=1;i<=n;i++)
a[i]=lower_bound(b+1,b+tot+1,a[i])-b;
for(int i=1;i<=m;i++){
int l,r,k;cin>>l>>r>>k;
q[i]=(ask){i,l,r,k,(l-1)/sq+1};
}
sort(q+1,q+m+1,cmp);
int l=1,r=0;
for(int i=1;i<=m;i++){
int L=q[i].l,R=q[i].r;
while(l<L) del(l++);
while(l>L) add(--l);
while(r<R) add(++r);
while(r>R) del(r--);
ans[q[i].id]=(cnt*q[i].k>=R-L+1);
}
for(int i=1;i<=m;i++)
cout<<(ans[i]?"YES":"NO")<<'\n';
return 0;
}