Solution
莫队,用bitset来存储出现的数
如果是和或者差,直接通过左移右移就可以实现判断
对于积的询问,暴力判就行了,因数只要枚举\(\sqrt n\)个
总复杂度是\(O(n^2/32)\),反正\(3s\)是可以过的咯
Code
#include#define ll long long#define max(a,b) ((a)>(b)?(a):(b))#define min(a,b) ((a)<(b)?(a):(b))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<<3)+(x<<1)+ch-'0';ch=getchar();} return x*f;}#define MN 100005#define N MNint n,m,a[MN],T;bool Ans[MN];std::bitset now,fnow;struct ques{ int l,r,opt,x,id,pl; bool operator <(const ques&o)const{return (pl^o.pl)?(pl q[i].l;--l) if(!num[a[l-1]]++) now[a[l-1]]=1,fnow[N-a[l-1]]=1; for(;r>q[i].r;--r) if(!(--num[a[r]])) now[a[r]]=0,fnow[N-a[r]]=0; for(;l
Blog来自PaperCloud,未经允许,请勿转载,TKS!