首页 > 其他分享 >10051. 「一本通 2.3 例 3」Nikitosh 和异或

10051. 「一本通 2.3 例 3」Nikitosh 和异或

时间:2022-12-02 00:56:16浏览次数:465  
标签:pre ch int tot 异或 10051 2.3 include

求A序列中的两个子序列( L1<=R1 < L2<=R2),使  XORS( 1 ) +XORS( 2 )最大

XORS(区间内整数的异或和)

 

 求 left[i] ,right[i] 前缀和后缀的 区间内最大异或和  ,dp :left[ i] =max( left[i-1] ,v)

v 是考虑以i 结尾的区间的贡献, 求一个j ,使XOR( j , i ) 最大,用前缀和思想 ( pre[i] = a[1] ^ a[2] ^ a[3] ....a[i] )

 v= pre[j] ^ pre[i]

 

#include<iostream>
#include <algorithm>
#include <cstring>
using namespace std;
 const int N=4e5+2;
 int ch[N*32][2],tot;
 int n;
 int a[N],g[N],f[N];
 void insert(int x){
     int i,c,u=1;
     
     for(i=31;i>=0;i--){
          c=(x>>i)&1;
         if(ch[u][c]==0){
             ch[u][c]=++tot; 
         }
         u=ch[u][c];
     }
 }
 int find(int x){
     int i,c,u=1;
     int res=0;
     for(i=31;i>=0;i--){
         c= (x>>i)&1; c=c^1;
         
         if(ch[u][c]) res+=(1<<i),u=ch[u][c];
         else u=ch[u][c^1];
     }
     return res;
 }
 main(){
     int i,t;
     cin>>n ; 
     tot=1; t=0;
     for(i=1;i<=n;i++){
         cin>>a[i];
         t^=a[i]; insert(t);
         f[i]=max(f[i-1],find(t));
     }
     memset(ch,0,sizeof ch);
     tot=1; t=0;
     for(i=1;i<=n;i++){
         t^=a[i]; insert(t);
         find(t); g[i]=max(g[i+1],find(t));
     }
     
     int ans=0;
    for(i=1;i<=n;i++){
        ans=max(ans,f[i]+g[i+1]);
    }
    cout<<ans;
 }

 

标签:pre,ch,int,tot,异或,10051,2.3,include
From: https://www.cnblogs.com/towboa/p/16943237.html

相关文章

  • #10049. 「一本通 2.3 例 1」Phone List
    字典树板子题#include<iostream>#include<algorithm>#include<cstring>usingnamespacestd;constintN=1e5+4;charnum[40];intlen,fg;intch[N][15],to......
  • Intelij idea 2022.2.3安装过程总结
    参考教程:https://www.exception.site/essay/idea-reset-eval详细安装过程参考了以上教程,本文对博主自己安装时遇到的问题进行总结。1.安装过程概述安装过程参考教程,一直......
  • Linux高级-2.3编辑器vim-笔记
    基础操作建议记住,常用的也就20个命令vi简介vi是“Visualinterface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多......
  • IntelliJ IDEA 2022.2.3注释快捷键(java)
    注释行和代码块使用Ctrl斜杠注释掉任意一行使用相同的快捷方式取消注释注释行:将文本光标置于该行中的任意位置,然后按Ctrl斜杠。选择几行,然后使用Ctrl斜杠注释掉要......
  • 异或(xor)的性质
    一点性质(1)xxory=zxxorz=y(2)xor是一个不带进位的二进制加法.实际例子已知\(n\)个同学的学号,现在有一场活动,来了\(n-1\)个同学,他们每个人都把自己的学号写......
  • 捣鼓日记-家用nas群晖6.2.3使用星际蜗牛128GB固态硬盘安装系统
    要使用特殊的二合一系统使用其中的extend系统黑群晖二合一镜像(6.2.3和6.1.7)设置向导、分区自动扩容|若夜彼岸(ruoyer.com)链接:https://pan.baidu.com/s/12CLGPJHj-......
  • Struts2.3接收post方式提交的表单参数的方式
    一:方式一:通过request来获取,首先让action实现ServletRequestAware接口,然后通过request来获取提交的参数,代码如下:packagecn.gov.csrc.flight.action;importjava.util.HashM......
  • 11.22.3
    #include<stdio.h>intmain(){ inti,k,l,sum1=0,sum2=0; for(i=1;i<=3000;i++) { for(k=1;k<=i/2;k++) {if(i%k==0) {sum1+=k; } } for(l=1;l<=sum1/2;l++) {i......
  • 5.【未解决】WARNING: You are using pip version 21.3.1; however, version 22.3.1 i
    遇到的问题:WARNING:Youareusingpipversion21.3.1;however,version22.3.1isavailable.Youshouldconsiderupgradingviathe'C:\Users\Administrator\Pychar......
  • HM-RocketMQ2.3【SpringBoot整合Dubbo】
    1前置条件安装依赖包下载dubbo-spring-boot-starter依赖包将dubbo-spring-boot-starter安装到本地仓库mvninstall-Dmaven.skip.test=true注意springboot整......