932D - Tree

思路:

树上倍增

anc[i][u]:u的2^i祖先

mx[i][u]:u到它的2^i祖先之间的最大值,不包括u

pre[i][u]:以u开始的递增序列的2^i祖先

sum[i][u]:以u开始递增序列从u到2^i祖先的和,不包括u

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a)) const int N=4e5+;
const ll INF=1e15;
int anc[][N],pre[][N];
ll sum[][N],w[N],mx[][N];
int main(){
ios::sync_with_stdio(false);
cin.tie();
cout.tie();
int q,cnt=,op;
ll l,r,last=;
w[]=INF;
for(int i=;i<;i++)sum[i][]=sum[i][]=mx[i][]=mx[i][]=INF;
cin>>q;
while(q--){
cin>>op>>l>>r;
l^=last;
r^=last;
if(op==){
anc[][++cnt]=l;
w[cnt]=r;
mx[][cnt]=w[l];
for(int i=;i<;i++){
anc[i][cnt]=anc[i-][anc[i-][cnt]];
mx[i][cnt]=max(mx[i-][cnt],mx[i-][anc[i-][cnt]]);
}
int t=cnt;
for(int i=;i>=;i--){
if(mx[i][t]<w[cnt]){
t=anc[i][t];
}
}
pre[][cnt]=anc[][t];
sum[][cnt]=w[anc[][t]];
for(int i=;i<;i++){
pre[i][cnt]=pre[i-][pre[i-][cnt]];
sum[i][cnt]=sum[i-][cnt]+sum[i-][pre[i-][cnt]];
}
}
else{
int ans=;
if(w[l]<=r){
ans=;
r-=w[l];
for(int i=;i>=;i--){
if(sum[i][l]<=r){
r-=sum[i][l];
l=pre[i][l];
ans+=<<i;
}
}
}
last=ans;
cout<<ans<<endl;
}
}
return ;
}

Codeforces 932D - Tree的更多相关文章

  1. Tree CodeForces -932D

    错误记录:如下注释语句 #include<cstdio> #include<algorithm> using namespace std; typedef long long ...

  2. Codeforces 675D Tree Construction Splay伸展树

    链接:https://codeforces.com/problemset/problem/675/D 题意: 给一个二叉搜索树,一开始为空,不断插入数字,每次插入之后,询问他的父亲节点的权值 题解: ...

  3. Codeforces 570D TREE REQUESTS dfs序+树状数组 异或

    http://codeforces.com/problemset/problem/570/D Tree Requests time limit per test 2 seconds memory li ...

  4. Codeforces 570D - Tree Requests【树形转线性,前缀和】

    http://codeforces.com/contest/570/problem/D 给一棵有根树(50w个点)(指定根是1号节点),每个点上有一个小写字母,然后有最多50w个询问,每个询问给出x和 ...

  5. Codeforces 23E Tree

    http://codeforces.com/problemset/problem/23/E 题意:给一个树,求砍断某些边,使得所有联通块大小的乘积最大.思路:f[i][j]代表当前把j个贡献给i的父亲 ...

  6. Codeforces 1092F Tree with Maximum Cost(树形DP)

    题目链接:Tree with Maximum Cost 题意:给定一棵树,树上每个顶点都有属性值ai,树的边权为1,求$\sum\limits_{i = 1}^{n} dist(i, v) \cdot ...

  7. [Educational Round 17][Codeforces 762F. Tree nesting]

    题目连接:678F - Lena and Queries 题目大意:给出两个树\(S,T\),问\(S\)中有多少连通子图与\(T\)同构.\(|S|\leq 1000,|T|\leq 12\) 题解 ...

  8. Codeforces 911F Tree Destruction

    Tree Destruction 先把直径扣出来, 然后每个点都和直径的其中一端组合, 这样可以保证是最优的. #include<bits/stdc++.h> #define LL lon ...

  9. CodeForces 570D - Tree Requests - [DFS序+二分]

    题目链接:https://codeforces.com/problemset/problem/570/D 题解: 这种题,基本上容易想到DFS序. 然后,我们如果再把所有节点分层存下来,那么显然可以根 ...

随机推荐

  1. c++ kafka 客户端rdkafka报Receive failed: Disconnected问题原因以及解决方法

    %3|1538976114.812|FAIL|rdkafka#producer-1| [thrd:kafka-server:9092/bootstrap]: kafka-server:9092/0: ...

  2. 比beanutil更加灵活的dto转换工具dozer

    准确的说,是因为pojo无法一招走天下或者说内外部隔离的原因,所以有些时候,不得不在两个bean之间做copy或者转换映射.对于直接性的属性拷贝beanutil以及能够满足大部分要求,但是如果遇到字段 ...

  3. mysql导入导出表

    导入 source ***(路径+文件) 导出 mysqldump -uroot -plizhenghua 数据库名 表名 > 你要保存的sql文件(加位置)

  4. ProgressDemo

    封装了下如下View滑动效果,类似网易的首页滑动效果. 详情见: https://github.com/VivienQin16/ProgressDemo

  5. iOS字体大小

    1,iOS 字体大小单位是pt——磅. 英文字体的1磅,相当于1/72 英寸,约等于1/2.8mm. px:相对长度单位.像素(Pixel).(PS字体) pt:绝对长度单位.点(Point).(iO ...

  6. c和c++main函数的参数

    1.代码 int main(int argc,char **argv[]) { ; } 2.分析 argc:代码参数个数 argv:二级指针,很多个字符串,这里代表参数列表 3.分析 这个代码最终被编 ...

  7. POJ 2387 Til the Cows Come Home 【最短路SPFA】

    Til the Cows Come Home Description Bessie is out in the field and wants to get back to the barn to g ...

  8. FJUT 毒瘤3(二分 + 最大匹配)题解

    毒瘤3 TimeLimit:1000MS  MemoryLimit:256MB 64-bit integer IO format:%lld   Problem Description 字节跳动有n款产 ...

  9. P5091 【模板】欧拉定理

    思路 欧拉定理 当a与m互质时 \[ a^ {\phi (m)} \equiv 1 \ \ (mod\ m) \] 扩展欧拉定理 当a与m不互质且\(b\ge \phi(m)\)时, \[ a^b \ ...

  10. (zhuan) Attention in Long Short-Term Memory Recurrent Neural Networks

    Attention in Long Short-Term Memory Recurrent Neural Networks by Jason Brownlee on June 30, 2017 in  ...