题目:[USACO 6.1.3] Cow XOR

没找到这题具体网址,这个题就是求最大异或区间(总长度尽量小,右端点尽量大)

嗯很显然一个[l,r]的异或和=s[r]s[l-1],那么现在有了优秀的n2做法

不难(很难)联想trie树,枚举1到n每次把1...i的异或和加入trie树中,然后跑一遍找最大值(史记上就是trie树维护这个n^2算法,降低了复杂度)

代码:

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
const int N=1e5+5;
using namespace std;
int n,m,tot,ret=-1,lr,rr,a[N],sum;
namespace trietree
{
struct trie
{
int son[2],tag;
}e[N*22];
void insert(int x,int id)
{
int p=0;
for(int i=21;i>=0;i--)
{
int k=x>>i&1;
if(!e[p].son[k])
e[p].son[k]=++tot;
p=e[p].son[k];
}
e[p].tag=id;
}
int query(int x,int &ans)
{
int p=0;
for(int i=21;i>=0;i--)
{
int k=x>>i&1;
if(!e[p].son[k^1])
p=e[p].son[k];
else
p=e[p].son[k^1],ans+=1<<i;
}
return e[p].tag;
}
}
using namespace trietree;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int x;
scanf("%d",&x);
sum^=x;
insert(sum,i);
int ans=0;
int l=query(sum,ans);
if(ans>ret)
{
ret=ans;
rr=i,lr=l;
}
}
printf("%d %d %d\n",ret,lr+1,rr);
return 0;
}

2022春每日一题:Day 33的更多相关文章

  1. 老男孩IT教育-每日一题汇总

    老男孩IT教育-每日一题汇总 第几天 第几周 日期 快速访问链接 第123天 第二十五周 2017年8月25日 出现Swap file….already exists以下错误如何解决? 第122天 2 ...

  2. 【Java每日一题】20170106

    20170105问题解析请点击今日问题下方的"[Java每日一题]20170106"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  3. 【Java每日一题】20170105

    20170104问题解析请点击今日问题下方的"[Java每日一题]20170105"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  4. 【Java每日一题】20170104

    20170103问题解析请点击今日问题下方的"[Java每日一题]20170104"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  5. 【Java每日一题】20170103

    20161230问题解析请点击今日问题下方的"[Java每日一题]20170103"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  6. 【Java每日一题】20161230

    // 20161229问题解析请点击今日问题下方的"[Java每日一题]20161230"查看(问题解析在公众号首发,公众号ID:weknow619)package Dec2016 ...

  7. 【Java每日一题】20161229

    package Dec2016; import java.util.ArrayList; import java.util.List; public class Ques1229 { public s ...

  8. 【Java每日一题】20161228

    package Dec2016; import java.util.ArrayList; import java.util.List; public class Ques1228 { public s ...

  9. 【Java每日一题】20161227

    package Dec2016; public class Ques1227 { public static void main(String[] args){ } { c = 1; } int c ...

  10. 【Java每日一题】20161226

    package Dec2016; public class Ques1226 { static{ num = 1; } public static int num = 2; public static ...

随机推荐

  1. 第三十七篇:JS基础(this)

    好家伙, 解析器(浏览器)在调用函数是每次都会响函数内部传递进一个隐含的参数, 这个隐含参数就是this,this指向的是一个对象,由浏览器传过来 这个对象我们成为函数执行的上下文对象 根据函数的调用 ...

  2. BNC Part-of-speech codes

    Extracted from the BNC Manual AJ0 adjective (general or positive) e.g. good, old AJC comparative adj ...

  3. 3款知名RTMP推流模块比较:OBS VS SmartPublisher VS Flash Media Live Encoder

    OBS 功能强大,几乎所有你想要的场景它都有,用起来很顺手.可以将桌面.摄像头.程序窗口通过rtmp推送到流媒体服务器上. 当然如果你是开发者,想基于OBS做二次开发,实现二次产品化的化,难度比较大, ...

  4. KDB_Database_Link 使用介绍

    kdb_database_link 是 KingbaseES 为了兼容oracle 语法而开发的跨数据库访问扩展,可用于访问KingbaseES, Postgresql , Oracle .以下分别介 ...

  5. 注解@PostConstruct分析

    作用 1.注解@PostConstruct可以添加在类的方法上面,如果这个类被IOC容器托管,那么在对Bean进行初始化前的时候会调用被这个注解修饰的方法 被定义在哪里? 1.被定义在了CommonA ...

  6. thinkphp5.1打印SQL语句

    最近在写tp框架搭建的小玩具,有时候我们需要查看SQL语句.所以就诞生了这篇随笔,命令如下: $xxx=db('xxx')->where('x',xx)->select(); $sql=D ...

  7. 使用containerlab搭建cilium BGP环境解析

    使用 Containerlab + Kind 快速部署 Cilium BGP 环境一文中使用Containerlab和Cilium实现了模拟环境下的Cilium BGP网络.它使用Containerl ...

  8. Linux 使用 Systemd 管理进程服务

    转载自:https://mp.weixin.qq.com/s/e-_PUNolUm22-Uy_ZjpuEA systemd 介绍 systemd是目前Linux系统上主要的系统守护进程管理工具,由于i ...

  9. Windows界面个人常用快捷键

    分享一下个人常用快捷键. 说明:字母排序规则遵循字母表(a->z) 快捷键 介绍 windows+d 由当前应用直接返回桌面,再按一次回到应用 windows+e 打开文件资源管理器 windo ...

  10. 字符串反码A

    while True: try: string=input() if string!="!": res="" for i in string: if i.isu ...