可持久化trie。考场上我脑补了一个trie树合并也A了

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int n, k, m, dfnl[100005], dfnr[100005], idx, rot[100005], v[100005], uu, vv, cnt;
int hea[100005], fan[100005], tot;
struct Edge{
int too, nxt, val;
}edge[200005];
struct Node{
int l, r, sum;
}nd[3333333];
void add_edge(int fro, int too){
edge[++cnt].nxt = hea[fro];
edge[cnt].too = too;
hea[fro] = cnt;
}
void dfs(int x, int f){
dfnl[x] = ++idx;
fan[idx] = x;
for(int i=hea[x]; i; i=edge[i].nxt){
int t=edge[i].too;
if(t!=f) dfs(t, x);
}
dfnr[x] = idx;
}
int update(int pre, int x, int p){
int re=++tot;
nd[re] = nd[pre];
nd[re].sum++;
if(p<0)
return re;
int tmp=(x>>p)&1;
if(tmp) nd[re].r = update(nd[pre].r, x, p-1);
else nd[re].l = update(nd[pre].l, x, p-1);
return re;
}
int query(int pre, int now, int x, int p){
if(p<0) return 0;
int tmp=(x>>p)&1;
if(tmp){
int sum=nd[nd[now].l].sum-nd[nd[pre].l].sum;
if(sum)
return query(nd[pre].l, nd[now].l, x, p-1)+(1<<p);
else
return query(nd[pre].r, nd[now].r, x, p-1);
}
else{
int sum=nd[nd[now].r].sum-nd[nd[pre].r].sum;
if(sum)
return query(nd[pre].r, nd[now].r, x, p-1)+(1<<p);
else
return query(nd[pre].l, nd[now].l, x, p-1);
}
}
int main(){
while(scanf("%d %d %d", &n, &k, &m)!=EOF){
memset(hea, 0, sizeof(hea));
idx = tot = cnt = 0;
for(int i=1; i<=n; i++)
scanf("%d", &v[i]);
for(int i=1; i<n; i++){
scanf("%d %d", &uu, &vv);
add_edge(uu, vv);
add_edge(vv, uu);
}
dfs(k, 0);
for(int i=1; i<=n; i++)
rot[i] = update(rot[i-1], v[fan[i]], 30);
while(m--){
scanf("%d %d", &uu, &vv);
printf("%d\n", query(rot[dfnl[uu]-1], rot[dfnr[uu]], vv, 30));
}
}
return 0;
}

SXCPC2018 nucoj2004 国王的怪癖的更多相关文章

  1. bzoj3157国王奇遇记(秦九韶算法+矩乘)&&bzoj233AC达成

    bz第233题,用一种233333333的做法过掉了(为啥我YY出一个算法来就是全网最慢的啊...) 题意:求sigma{(i^m)*(m^i),1<=i<=n},n<=10^9,m ...

  2. NOIP2012国王游戏

      题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 成一排,国王站在 ...

  3. [NOIP2012] 提高组 洛谷P1080 国王游戏

    题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 成一排,国王站在队伍 ...

  4. nyoj925_国王的烦恼_并查集

    国王的烦恼 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛.两个小岛间可能 ...

  5. javaScript怪癖分析

    最近了解到javascript中有些编程怪癖现象,很有意思,有必要总结一下: 1.未知变量名创建全局变量 在我们平常的编写javascript程序的时候,有的人写法不是很正规,在定义变量的时候 直接定 ...

  6. ACM 国王的魔镜

    国王的魔镜 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的. 比如一 ...

  7. 【NOIP2012】国王游戏

    这一次高精度完美地过辣好开心OvO,还get到了非常方便的高精度除小于10000的方法,这个是我自己脑出来的OvO 看来下午高精度傻逼得值qvq 原题: 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个 ...

  8. 【BZOJ】【3157】&【BZOJ】【3516】国王奇遇记

    数论 题解:http://www.cnblogs.com/zhuohan123/p/3726933.html copy一下推导过程: 令$$S_i=\sum_{k=1}^{n}k^im^k$$ 我们有 ...

  9. 「译」JavaScript 的怪癖 1:隐式类型转换

    原文:JavaScript quirk 1: implicit conversion of values 译文:「译」JavaScript 的怪癖 1:隐式类型转换 译者:justjavac 零:提要 ...

随机推荐

  1. 从零开始的全栈工程师——js篇2.4

    条件语句与循环语句 变量提升: 变量提升是浏览器的一个功能,在运行js代码之前,浏览器会给js一个全局作用域叫window ,window分两个模块,一个叫内存模块,一个叫运行模块,内存模块找到当前作 ...

  2. java.lang.IllegalArgumentException: Document base F:\personal\projects\annoMVC\web does not exist or is not a readable directory

    tomcat明明在d盘,怎么到F盘了...纳闷啊... 解决办法: 1停掉Tomcat服务2把/conf/Catalina/localhost下的文件删除掉(我在这个文件夹里发现了一个xml,指向了F ...

  3. C#Udp组播

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  4. uvm_dpi——DPI在UVM中的实现(一)

    文件: src/dpi/uvm_dpi.svh 类:  无   SystemVerilog DPI,全称SystemVerilog直接编程接口 (英语:SystemVerilog Direct Pro ...

  5. jquery的trigger和triggerHandler区别

    网上关于这个问题都是抄来抄去的,都没怎么说清楚.所以自己做了个测试,供大家参考指教.首先先看API怎么说的 为了检验一下,编写了一个简单的测试代码,如下: <html lang="en ...

  6. window.onload中调用函数报错的问题

    今天练习js,忽然遇到了一个问题,就是window.onload加载完成后,调用其中的函数会报错, 上一段简单的代码: 报错信息: 报错原因: 当window.onload加载完成后,第一个alert ...

  7. NSAttributedString能否设置文字下划线?是否支持line break?

    #import <CoreText/CoreText.h> #import "ViewController.h" @interface ViewController ( ...

  8. 使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10

    使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10 [问题点数:40分,结帖人xieyongqiu]             不显示删除回复             ...

  9. 前端知识体系之CSS及其预处理器SASS/LESS

    如果你是个前端设计师,很多时候我们都在写CSS,CSS是定义页面样式的脚本,并不是一种编程语言,只是一行行单纯的描述页面元素的样子,如果对英语熟练的话,它像说话一样简单,这里举个简单的例子: body ...

  10. mongodb索引 全文索引使用限制

    全文索引非常强大,但是同样存在很多限制,我们来看以下去全文索引的使用限制: 1.每次查询,只能指定一个$text查询 2.$text查询不能出现在$nor查询中 之前没有接触过$nor查询,$nor查 ...