CF840E In a Trap
题意:给你一棵节点带权树。q个询问,每次询问u到v的路径上max(a[i]^dis(i,v))?
保证u是v的祖先,i是u->v路径上的点。n,ai<=5e4。
标程:
#include<bits/stdc++.h>
using namespace std;
int read()
{
int x=,f=;char ch=getchar();
while (ch<''||ch>'') {if (ch=='-') f=-;ch=getchar();}
while (ch>=''&&ch<='') x=(x<<)+(x<<)+ch-'',ch=getchar();
return x*f;
}
const int N=;
int cnt,n,q,u,v,a[N],dep[N],head[N],fa[N],sc,son[][],t,c,now,sum,f[N][],jp[N],ans,base;
struct node{int to,next;}num[N*];
void add(int x,int y)
{num[++cnt].to=y;num[cnt].next=head[x];head[x]=cnt;}
void dfs(int x)
{
for (int i=head[x];i;i=num[i].next)
if (num[i].to!=fa[x]) {
dep[num[i].to]=dep[x]+;
fa[num[i].to]=x;
dfs(num[i].to);
}
}
int main()
{
n=read();q=read();
for (int i=;i<=n;i++) a[i]=read();
for (int i=;i<n;i++) u=read(),v=read(),add(u,v),add(v,u);
dfs();
for (int i=;i<=n;i++)
if (dep[i]>=)
{
int x=i;sc=;son[][]=son[][]=;
for (int j=;j<;j++,x=fa[x])//add_Trie
{
t=a[x]^j;now=;
for (int k=;k>=;k--)
{
c=(t>>k)&;
if (!son[now][c]) son[now][c]=++sc,son[sc][]=son[sc][]=;
now=son[now][c];
}
}
for (int j=;j<;j++)
{
t=j<<;now=sum=;
for (int k=;k>=;k--)
{
c=(t>>k)&;
if (son[now][c^]) now=son[now][c^],sum+=(<<k);else now=son[now][c];
}
f[i][j]=sum;
}
jp[i]=x;
}
while (q--)
{
u=read();v=read();ans=base=;
for (;dep[v]-dep[u]>=;v=jp[v]) ans=max(ans,f[v][base]),base++;
for (base=base*;v!=fa[u];v=fa[v],base++) ans=max(ans,a[v]^base);
printf("%d\n",ans);
}
return ;
}
题解:分块+Trie
异或性质:比如需要异或x,那么^(x&255)^((x>>8)<<8)等价。拆数异或值不变。
对于每个点到根的链,每256个分一个块。
每个点x保存f[x][i]表示从x以上256个点的块中max(a[j]^dis(x,j)^(i<<8))。容易用字典树处理出所有i的最大异或值。
查询的时候按照块跳。统计max(f[v][base]),每次base++。
时间复杂度O(q*256+n*256*logn)。
CF840E In a Trap的更多相关文章
- 【CF840E】In a Trap 分块
[CF840E]In a Trap 题意:一棵n个点的树,第i个点权值为ai,q次询问,每次给定u,v(u是v的祖先),求对于所有在u-v上的点i,$a_i\ \mathrm{xor}\ dis(i, ...
- linux shell trap的使用
原文地址:http://blog.sina.com.cn/s/blog_62eb16bb01014dbh.html 一. trap捕捉到信号之后,可以有三种反应方式: (1)执行一段程序来处理这一信号 ...
- Alignment trap 解决方法 【转 结合上一篇
前几天交叉编译crtmpserver到arm9下.编译通过,但是运行的时候,总是提示Alignment trap,但是并不影响程序的运行.这依然很令人不爽,因为不知道是什么原因引起的,这就像一颗定时炸 ...
- ARMLinux下Alignment trap的一些测试 【转自 李迟的专栏 CSDN http://blog.csdn.net/subfate/article/details/7847356
项目中有时会遇到字节对齐的问题,英文为“Alignment trap”,如果直译,意思为“对齐陷阱”,不过这个说法不太好理解,还是直接用英文来表达. ARM平台下一般是4字节对齐,可以参考文后的给出的 ...
- Xcode 自动升级到8.21后坑-Abort trap: 6
pod install or pod update show this message:Generating Pods project Abort trap: 6solve method: udo g ...
- Xcode8 pod install 报错 “Generating Pods project Abort trap
Xcode8 pod install 报错 "Generating Pods project Abort trap 今天在写一个新项目的时候,使用cocoapods在执行 $ pod ins ...
- Erlang ERTS的Trap机制的设计及其用途
出处:http://mryufeng.iteye.com/blog/334744 erlang的trap机制在实现中用的很多,在费时的BIF操作中基本上都可以看到.它的实现需要erl vm的配合.它的 ...
- Windows Internals学习笔记(四)Trap Dispatching
参考资料: 1. <Windows Internals> 知识点: ● 陷阱trap:它是一种处理器机制,用以在某一异常或中断出现时,捕捉该执行线程,并将其控制权转交到操作系统中某一固定位 ...
- trap在shell中捕捉信号
一.trap捕捉到信号之后,可以有三种反应方式:(1)执行一段程序来处理这一信号(2)接受信号的默认操作(3)忽视这一信号 二.trap对上面三种方式提供了三种基本形式:第一种形式的trap命令在sh ...
随机推荐
- Web上传文件的三种解决方案
第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname = ...
- 实现网页qq在线咨询功能
在自己的网页中实现qq在线咨询,给图片或链接添加地址为:tencent://message/?uin=你的qq号码!就可以了. <a href="tencent://message/? ...
- PHPStorm + Xdebug 调试PHP代码 有大用
星期四, 12/26/2013 - 19:54 - shipingzhong PHPStorm + Xdebug 调试PHP代码 http://e.v-get.com/2013-11-20 16:55 ...
- Failed to load resource: the server responsed with a status of 400 (Bad Request)
浏览器报错:Failed to load resource: the server responsed with a status of 400 (Bad Request) ajax请求失败,一般情况 ...
- Linux 路由表详解及 route 命令详解
参考资料 Linux 内核的路由表 通过 route 命令查看 Linux 内核的路由表: [root@VM_139_74_centos ~]# route Kernel IP routing tab ...
- 关于Nuget包安装之后再卸载,找不到dll的问题
场景: 在nuget上安装了FFTW.NET,自动的安装一堆其依赖的dll,那些dll都是donet自带的.再卸载这些dll的时候,项目可以生成成功,就是跑不起来.提示如下: 解决方案: 经过排查发现 ...
- mysql 数据库表结构对比语句
判断两个数据库互相不存在的表 select a.TABLE_SCHEMA,a.TABLE_NAME from information_schema.TABLES a where a.TABLE_SCH ...
- html+css+js实现简单登陆注册页面
先看一下最终效果,登陆和注册 背景图片: 附源码: login.html <!DOCTYPE html> <html lang="en"> <head ...
- 网页导出excel
package site.action.ecom.backend.wechat.exportExcel; import java.lang.annotation.Documented;import j ...
- win10下装win7双系统安装教程
win10下装win7双系统安装教程 来源:www.laomaotao.org 时间:2017-02-13 10:15 新买的电脑预装了win10系统,但win10对于有些游戏兼容性不是很好,总是会出 ...