首页 > 其他分享 >T399751 Liangle's Rose Problem(亮亮的玫瑰问题)题解

T399751 Liangle's Rose Problem(亮亮的玫瑰问题)题解

时间:2023-11-18 11:56:16浏览次数:43  
标签:T399751 ch int Rose ret while 题解 Liangle

Link

T399751 Liangle's Rose Problem(亮亮的玫瑰问题)

Question

给出一个数组 \(a\) ,有 \(Q\) 次询问,每次询问 \([L,R]\) 种随便挑选几个连续的 \(a_i\) 使得,他们几个的或的值最大

Solution

考虑贪心,如果把负数视为 \(0\) ,那么一个数或上另外一个数,数肯定是变大的,那么就应该或上 \([L,R]\) 区间内所有的数,那么我们怎么判断某个区间 \([L,R]\) 内二进制的某一位上是否有一个 \(1\) ,对每个二进制记录前缀和,就可以判定了

Code

#include<bits/stdc++.h>
using namespace std;
const int maxn=5e5+5;
typedef long long LL;
int N,Q;
struct IO{
    static const int S=1<<21;
    char buf[S],*p1,*p2;int st[105],Top;
    ~IO(){clear();}
    inline void clear(){fwrite(buf,1,Top,stdout);Top=0;}
    inline void pc(const char c){Top==S&&(clear(),0);buf[Top++]=c;}
    inline char gc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
    inline IO&operator >> (char&x){while(x=gc(),x==' '||x=='\n'||x=='r');return *this;}
    template<typename T>inline IO&operator >> (T&x){
        x=0;bool f=0;char ch=gc();
        while(ch<'0'||ch>'9'){if(ch=='-') f^=1;ch=gc();}
        while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=gc();
        f?x=-x:0;return *this;
    }
    inline IO&operator << (const char c){pc(c);return *this;}
    template<typename T>inline IO&operator << (T x){
        if(x<0) pc('-'),x=-x;
        do{st[++st[0]]=x%10,x/=10;}while(x);
        while(st[0]) pc('0'+st[st[0]--]);return *this;
    }
}fin,fout;

struct Bit{
    int a[65];
    Bit(){memset(a,0,sizeof a);}
    Bit operator +(const Bit B){
        Bit ret;
        for(int i=0;i<=60;i++)ret.a[i]=a[i]+B.a[i];
        return ret;
    }
    Bit operator -(const Bit B){
        Bit ret;
        for(int i=0;i<=60;i++)ret.a[i]=a[i]-B.a[i];
        return ret;
    }
}d[maxn],s[maxn];

LL PrintBit(Bit x){
    LL ret=0;
    for(int i=60;i>=0;i--)
        ret=(ret<<1)+(x.a[i]!=0);
    return ret;
}
Bit GetBit(LL x){
    Bit ret;
    int cnt=0;
    while(x){
        ret.a[cnt++]=x&1;
        x>>=1;
    }
    return ret;
}
int main(){
    freopen("C.in","r",stdin);
    fin>>N;
    for(int i=1;i<=N;i++){
        LL now;fin>>now; 
        if(now<0) 
            now=0;
        d[i]=GetBit(now);
        s[i]=s[i-1]+d[i];
    }
    fin>>Q;
    for(int i=1;i<=Q;i++){
        int L,R;fin>>L>>R;
        Bit ans=s[R]-s[L-1];
        fout<<PrintBit(ans)<<'\n';
    }
    
    return 0;
}

标签:T399751,ch,int,Rose,ret,while,题解,Liangle
From: https://www.cnblogs.com/martian148/p/17840265.html

相关文章

  • T399752 The Maze of the Imperial Sister(御姐的迷宫)题解
    LinkT399752TheMazeoftheImperialSister(御姐的迷宫)Question判断图内是否有环Solution先判断连通性,所有点是不是在一个块内,然后用树的性质,点数\(=\)边数\(+1\)判断Code#include<bits/stdc++.h>usingnamespacestd;constintmaxn=1e5+5,maxe=maxn*2;structI......
  • P4115 Qtree4 题解
    P4115看到单点修改,求全局白色的最远距离,可以使用点分树。考虑维护这棵点分树,想想树的直径的dp求法:\(f_u=\max\{f_v+w(u,v)\}\),答案为\(\max(f_v+f_{v'})(v,v'\in\{\text{son}_u\})\),\(\{\text{son}_i\}\)表示\(i\)的孩子集合。这时候维护就十分简单了,对于每个点都......
  • 电脑网站支付报错“验签出错,建议检查签名字符串或私钥与应用公钥是否匹配”问题解决记
    在对接支付宝电脑网站支付的时候,遇到如下报错:“错误代码invalid-signature错误原因:验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配”。但展示的报错内容跟实际原因有所出入(在下文中有解答),这里记录下问题的解决排查过程。问题复现在对接电脑网站支付时,生成form表单......
  • Microservice - Load Balancing (LB)
        ......
  • 【C++中cin在Qt输出终端无法手动输入问题解决办法(详细)】
    现象:在Qt中使用cin进行对一个变量z进行输入,然后在用cout对z进行输出,结果没有进行手动输入,程序自动凭空出现类似512,32759等一些数值输出。 解决办法:第一步:在Qt左侧项目栏,在.pro文件中添加一行代码CONFIG+=console 第二步:在项目--运行--勾选在终端中运行(Runinterminal) 配置......
  • 苏格拉底问答、实践过程截图、遇到问题解决问题截图,代码链接
    #include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<semaphore.h>#include<pthread.h>#definemsleep(x)usleep(x*1000)#definePRODUCT_SPEED3//生产速度#defineCONSUM_SPEED1......
  • UVA 11178 Morley's Theorem 题解
    计算几何LinkUVA11178Morley'sTheoremQuestionMorley定理是这样的,作三角形ABC每个内角的三等分线,相交成三角形DEF,则DEF是等边三角形给出\(A,B,C\)坐标,求\(D,E,F\)坐标Solution其实是一道计算几何板子题只需要计算\(\angleABC\)的值\(a\),然后把\(BC\)逆......
  • 【题解 CF1628D2】 Game on Sum
    GameonSum(HardVersion)题面翻译Alice和Bob正在玩一个游戏,游戏分为\(n\)个回合,Alice和Bob要轮流对一个数\(x\)进行操作,已知这个数初始值是\(0\)。具体每个回合的行动规则如下:Alice选择一个在区间\([0,k]\)之间的实数\(t\)。Bob可以选择让\(x\)变成\(......
  • A2OJ Ladder 32 简要题解
    https://earthshakira.github.io/a2oj-clientside/server/Ladder32.html只记录Difficultylevel>=8的。有很多题是口胡的。写了的会标注提交记录。还有些很久以前写过的题就懒得搬提交记录了。任何的*都表示该段的后续部分未能想出并查看了题解。159.CF372DChoosingSub......
  • 【题解 ABC180F】 Unbranched
    [ABC180F]Unbranched题面翻译求\(N\)个点,\(M\)条边且满足以下条件的图的数量:图中无自环;每个点度数最多为\(2\);连通块大小的最大值恰好为\(L\)。答案对\(10^9+7\)取模。\(2\leN\le300\),\(1\leM,L\leN\)。题目描述頂点にラベルが付き辺にはラベルが付い......