Iva & Pav

原题链接

题解,好多细节。。

1.构建st表时的细节
2.数越多,按位与的结果越小,所以对于 f(l,i) 存在 rmax 使得 i>rmaxf(l,i)<k 小于等于时相反,故具有单调性
但是,在倍增结构上二分你玩原神玩多了?
向右遍历即可,直到 r 恰好大于 rmax

code

#include<bits/stdc++.h>
using namespace std;
int a[200005]={0};
int st[200005][20]={0};
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            st[i][0]=a[i];
        }

        for(int k=1;k<=log2(n);k++)
            for(int l=1;l+(1<<k)-1<=n;l++)
                st[l][k]=st[l][k-1]&st[l+(1<<(k-1))][k-1];


        int q;
        cin>>q;
        while(q--)
        {
            int l,k;
            cin>>l>>k;
            if(a[l]<k)
            {
                printf("-1 ");
                continue;
            }

            int r=l,pre=a[l];
            for(int i=log2(n-l+1);i>=0;i--)
            {
                if(r+(1<<i)-1<=n&&(pre&st[r][i])>=k)
                {
                    pre&=st[r][i];
                    r+=(1<<i);
                }
            }
            cout<<r-1<<" ";
        }
        puts("");
    }
    return 0;
}

posted @   纯粹的  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示