codeforces840E In a Trap
好巧妙啊,感觉从来没有用过按位dp的trick,也没有用过树上链分块的trick
挂个链,全程看他的思路写的,当然lych帮我理解了最难懂的一部分
首先这里有个玄学的分块
每个点统计它上面256(其实差不多就是n^0.5)个点的情况
但是发现不同的块需要不同的处理,因为不同的块在第9位及以上的位会产生影响
所以对于每个点都需要预处理出Fi,也就是当这个块是统计答案时的第i个块时的最大答案
那么在跳的时候只要疯狂的跳256,同时记录下当前这一块已经是统计的第几块,最后不到256个暴力判一下
然而
暴力预处理是n*(256)^2≈n^2的
gg
于是可以用一个类似dp的方法做出来
首先把每一个答案找一个最好的地方放好(就是块内的每一个点所对应的答案找一个i使答案的9~16位为11111111)
接下来就一定是这些答案通过与下标同异或一个东西所得到的答案了
先枚举位,考虑这些dp值在这一位取反对答案的贡献
没了(感性理解是对的)
#include <bits/stdc++.h>
#define KUAI 256
#define LOG 8
#define FULL 255
using namespace std;
int n,m,E,x,y;
int dep[],fa[],Fa[],ans[][],a[],fir[],nex[],to[];
void add(int x,int y)
{
nex[++E]=fir[x];fir[x]=E;to[E]=y;
}
void build(int now,int fat)
{
if(now==)
int e=;
dep[now]=dep[fat]+;
fa[now]=fat;
for(int i=,x=now;i<=KUAI && x;i++,x=fa[x])
if(i==KUAI)
Fa[now]=x;
else
{
int y=a[x]^i;//当前答案
ans[now][FULL^(y>>LOG)]=max(ans[now][FULL^(y>>LOG)],y|(FULL<<LOG));//在最好的地方放好
}
for(int i=;i<LOG;i++)
for(int j=;j<KUAI;j++)
if(ans[now][j]==)
if(ans[now][j^(<<i)])
ans[now][j]=ans[now][j^(<<i)]^(<<(LOG+i));
for(int i=fir[now];i;i=nex[i])
if(to[i]!=fa[now])
build(to[i],now);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
for(int i=;i<n;i++)
scanf("%d%d",&x,&y),
add(x,y),add(y,x);
build(,);
for(int i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
if(i==)
int e=;
swap(x,y);
int ret=a[y]^(dep[x]-dep[y]),j=,de=;
for(;dep[x]-dep[y]>=KUAI;j++,de+=KUAI)
ret=max(ret,ans[x][j]),x=Fa[x];
for(;x!=y;x=fa[x],de++)
ret=max(ret,a[x]^de);
printf("%d\n",ret);
}
return ;
}
codeforces840E In a Trap的更多相关文章
- 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 ...
- trap命令使用
分享一个shell脚本技巧,大家写shell脚本的时候,一般而言仅仅保证功能可用,但程序的鲁棒性却不是太好,不够健壮,多数是脚本处理 一些中断信号导致,应对非预期的系统信号,其实系统自带的trap命令 ...
随机推荐
- 关于for 循环里 线程执行顺序问题
最近在做项目时遇到了 这样的需求 要在一个for循环里执行下载的操作, 而且要等 下载完每个 再去接着走循环.上网查了一些 觉得说的不是很明确.现在把我用到的代码 贴上 希望可以帮到有此需求的开发者 ...
- 第十五章-Web开发
随着web的发展, 最开始使用的CS架构已经不适合web了, 现在web使用的架构是BS架构 如今大部分重量级的软件都以web形式提供了 web开发的四个阶段 1) 静态web页面 2) CGI: 静 ...
- Spring笔记01(基础知识)
1.基础知识 01.Spring:轻量级Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建. 02.目标:实现一个全方位的整合框架,实现“一站式”的企业应用开发 ...
- BZOJ_4033_[HAOI2015]树上染色_树形DP
BZOJ_4033_[HAOI2015]树上染色_树形DP Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的 ...
- poj1475 Pushing Boxes[双重BFS(毒瘤搜索题)]
地址. 很重要的搜索题.★★★ 吐槽:算是写过的一道码量比较大的搜索题了,细节多,还比较毒瘤.虽然是一遍AC的,其实我提前偷了大数据,但是思路还是想了好长时间,照理说想了半小时出不来,我就会翻题解,但 ...
- ACM学习历程—HDU5410 CRB and His Birthday(动态规划)
Problem Description Today is CRB's birthday. His mom decided to buy many presents for her lovely son ...
- [转]深入了解 CSS3 新特性
简介 CSS 即层叠样式表(Cascading Stylesheet).Web 开发中采用 CSS 技术,可以有效地控制页面的布局.字体.颜色.背景和其它效果.只需要一些简单的修改,就可以改变网页的外 ...
- Spring读取加密属性文件处理--待整理
引言:Spring框架俨然已经是目前Java WEB项目开发的一个宠儿,更有人将Spring, Struts,和Hibernage称之为Java WEB项目开发的3件利器.Spring的依赖.注入.A ...
- MVC 模式介绍(1)
MVC 模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA ...
- 生成分布式随机ID
经测试,最快的一种 public class Generator { // should be between 40 (34 years) and 42 (139 years) ; // should ...