织梦动漫网站模板,百度官网认证价格,网页设计图片刷新随机更换,脚上起小水泡还很痒是怎么回事来源#xff1a;牛客网#xff1a;
题目描述
题目背景 把一张纸对折100次就和珠穆朗玛峰一样高了哦 ——syh 题目描述
注:本系列题不按难度排序哦
输入描述:
第一行一个n,m 接下来一行n个数表示a[i] 接下来m行#xff0c;每行l,r,l1,r1,x#xff0c;表示求get(l,r,x)…来源牛客网
题目描述
题目背景 把一张纸对折100次就和珠穆朗玛峰一样高了哦 ——syh 题目描述
注:本系列题不按难度排序哦
输入描述:
第一行一个n,m 接下来一行n个数表示a[i] 接下来m行每行l,r,l1,r1,x表示求get(l,r,x)*get(l1,r1,x) 输出描述: 3×m行先输出get(l,r,x),再输出get(l1,r1,x)再输出get(l,r,x)*get(l1,r1,x) 示例1 输入 复制
5 1
2 2 2 2 2
1 5 1 3 2输出 复制
5
3
15说明
题解
莫队的裸题 把l,r和l1,r1都读入并放在一起排序然后进行莫队 最后按照原先顺序输出
代码
我写的代码感觉没啥问题但是就是wa 只好贴出其他人的代码。。。
#includebits/stdc.h
#define forn(i,a,b) for(ll ia;ib;i)
#define INF 0x3f3f3f3f
using namespace std;#define ll long long
const ll N 100*100010;
const ll mod 20180623;
ll n,m;
ll a[N],ans[N*2],num[N],pos[N];
struct node{ll L,R,x,id;
}t[N*2];bool cmp(node a,node b){if(pos[a.L]pos[b.L])return a.Rb.R;else return pos[a.L]pos[b.L];
}ll L1,R0;
void solve(node p){while(p.LL){num[a[L]]--;L;}while(p.RR){R;num[a[R]];}while(p.LL){L--;num[a[L]];}while(p.RR){num[a[R]]--;R--;}
}int main(){scanf(%lld %lld,n,m);memset(num,0,sizeof(num));ll blocksqrt(n);for(ll i1;in;i){scanf(%lld,ai);pos[i]i/block;}for(ll i1;im;i){ll l1,r1,l2,r2,x;scanf(%lld%lld%lld%lld%lld,l1,r1,l2,r2,x);if(l1r1)swap(l1,r1);if(l2r2)swap(l2,r2);t[i].Ll1,t[i].Rr1,t[i].idi,t[i].xx;t[im].Ll2,t[im].Rr2,t[im].idim,t[im].xx;}sort(t1,t12*m,cmp);memset(num,0,sizeof(num));for(ll i1;i2*m;i){solve(t[i]);ans[t[i].id]num[t[i].x];}for(ll i1;im;i)printf(%lld\n%lld\n%lld\n,ans[i]%mod,ans[im]%mod,(ans[i]%mod*ans[im])%mod);return 0;
}