51nod 1422 沙拉酱前缀

来源:互联网 发布:人类不会毁于人工智能 编辑:程序博客网 时间:2024/05/01 16:24

记录所有操作以及操作结束后的数列长度。对于每个询问,二分查找对应的操作。如果查找到的操作种类为2,则继续向前二分查找,直到查找到的操作种类为1为止。

时间复杂度O(N*log(N)*log(N))

#include<bits/stdc++.h>using namespace std;const int MAXN=100100;long long op[MAXN],pos[MAXN],l[MAXN],c[MAXN],x[MAXN];int main(){long long m,n,q,index,i;while(scanf("%lld",&m)!=EOF){pos[0]=0;for(i=1;i<=m;i++){scanf("%lld",&op[i]);if(op[i]==1){scanf("%lld",&x[i]);pos[i]=pos[i-1]+1;} else{scanf("%lld%lld",&l[i],&c[i]);pos[i]=pos[i-1]+l[i]*c[i];}}scanf("%lld",&n);while(n--){scanf("%lld",&q);index=lower_bound(pos,pos+m+1,q)-pos;while(op[index]!=1){q=(q-pos[index-1])%l[index];if(q==0)q=l[index];index=lower_bound(pos,pos+m+1,q)-pos;}printf("%lld ",x[index]);}printf("\n");}}


0 0
原创粉丝点击