给一颗树,两种操作,一种把同一层的点权值加上v,另一种求一点下的子树权值和。

按层数中点个数分块,小块直接暴力把所有点用bit更新,大块把层的值存下来。

询问的时候子树权值和为bit中的值以及其下面的点在大块中的值,下面中的点在大块中的值用二分实现。

#include <bits/stdc++.h>
#include <unordered_set>
#include <unordered_map>
#define pb push_back
#define mp make_pair
#define x first
#define y second
#define rep(i,x,y) for(i=x;i<=y;i++)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define up rt,rt<<1,rt<<1|1
#define mem(x) memset(x,0,sizeof(x))
#define mem1(x) memset(x,-1,sizeof(x))
#define LMissher
using namespace std;
typedef long long ll;
typedef double db;
const int M = 1e5+7;
const double pi = acos(-1);
const int inf = 2147483647;
const int mod = 1e9+7;int n,q,i;
int cnt,head[M],tot,dep;
vector<int> d[M];
vector<int> lg;
int in[M],out[M];
ll ans[M],c[M];
void init(){tot=cnt=0;mem1(head);
}
struct edge
{int v,nex;
}e[M<<1];
void add(int u,int v){e[++cnt].v=v;e[cnt].nex=head[u];head[u]=cnt;
}
void dfs(int u,int fa,int de){dep=max(de,dep);in[u]=++tot;d[de].pb(in[u]);for(int j=head[u];~j;j=e[j].nex){int v=e[j].v;if(v==fa) continue;dfs(v,u,de+1);}out[u]=tot;
}
void update(int x,ll v){for(;x<=n;x+=x&(-x)){c[x]+=v;}
}
ll query(int x){ll tmp=0;for(;x;x-=x&(-x)) tmp+=c[x];return tmp;
}
int main(){#ifdef LMissherfreopen("1.in","r",stdin);freopen("1.out","w",stdout);#endifinit();scanf("%d%d",&n,&q);rep(i,1,n-1){int from,to;scanf("%d%d",&from,&to);add(from,to);add(to,from);}dep=0;dfs(1,-1,0);int block=1<<12;rep(i,0,dep){if(d[i].size()>block) lg.pb(i);}int op,l,v,rt;while(q--){scanf("%d",&op);if(op==1){scanf("%d%d",&l,&v);if(d[l].size()>block) ans[l]+=1ll*v;else{for(i=0;i<d[l].size();i++){update(d[l][i],v*1ll);}}}else{scanf("%d",&rt);ll aa=query(out[rt])-query(in[rt]-1);for(i=0;i<lg.size();i++){aa+=(upper_bound(d[lg[i]].begin(),d[lg[i]].end(),out[rt])-lower_bound(d[lg[i]].begin(),d[lg[i]].end(),in[rt]))*ans[lg[i]];}printf("%lld\n",aa);}}return 0;
}

View Code

转载于:https://www.cnblogs.com/LMissher/p/9611076.html

2018沈阳网络赛J相关推荐

  1. 2018沈阳网络赛:J kachang KD树

    把每个点建立(dfs序,depth),所有操作和查询转化为矩形操作,用KD树就可以 n(√n) n ( n ) n\sqrt(n)完成了. #include <bits/stdc++.h> ...

  2. 2018南京网络赛 j题 sum

    代码1: #include<bits/stdc++.h>using namespace std; typedef long long ll; const int N =2e7+5; boo ...

  3. hdu5459(2015沈阳网络赛J题)

    题意: 给出一个类似于斐波那契数组的字符串的定义,给出一个n,让求第n个串中任意两个c的距离的和. 思路: 我们用了三个小时找规律,最后发现是递推... 代码: #include <cstdio ...

  4. 2018沈阳网络赛D

    k短路模板题. #include <bits/stdc++.h> #define mem(x) memset(x,0,sizeof(x)) #define mem1(x) memset(x ...

  5. 2018宁夏网络赛 B Goldbach (米勒拉宾素数测试)

    2018宁夏网络赛 B Goldbach (米勒拉宾素数测试) 题目链接 题目大意: 给你一个偶数n (2<n<=1e18) 让你把n分解成两个素数的和.(如果有多个输出任意一个) 解题思 ...

  6. 乌鲁木齐网络赛J题(最小费用最大流模板)

    ACM ICPC 乌鲁木齐网络赛 J. Our Journey of Dalian Ends 2017-09-09 17:24 243人阅读 评论(0) 收藏 举报  分类: 网络流(33)  版权声 ...

  7. luogu 1327 数列排序 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J题 循环节

    luogu 1327 数列排序 题意 给定一个数列\(\{an\}\),这个数列满足\(ai≠aj(i≠j)\),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换? ...

  8. 2019 ICPC 徐州网络赛 J.Random Access Iterator

    2019 ICPC 徐州网络赛 J.Random Access Iterator 题目大意:给你n个点和n-1条边(树形结构),保证1为根节点,通过以下方式dfs遍历: 询问dfs到最深节点的概率(有 ...

  9. 2018沈阳网络预选赛 kachang

    Ka Chang 问答问题反馈 只看题面 19.64% 1000ms 131072K Given a rooted tree ( the root is node 11) of NN nodes. I ...

最新文章

  1. 【PAT (Basic Level) 】1015 德才论 (25 分)
  2. 邵阳一中2021高考成绩查询入口,邵阳高考成绩查询系统
  3. 子页面跳转到父页面指定地方
  4. 谷歌浏览器有哪些好看的主题_Kibou 简洁的Typecho主题
  5. EL4.1配置文件管理浅谈(1)
  6. double类型数据保留四位小数的另一种思路
  7. 白话关于API与SDK的区别
  8. 运动模糊(Montion blur)
  9. 福利:推荐一个免费的抠图网站
  10. 用百度脑图做思维导图
  11. 漂亮的表格样式(使用CSS样式表控制表格样式)
  12. linux安装ie浏览器吗,Ubuntu 上安装IE浏览器的方法
  13. Svn 命令行工具 操作 SVN 服务器
  14. 从熵增理论中我们到底悟到了什么……
  15. 四门外语傍身:外语,让我的大学如此完美
  16. Linux的PS修改名称,ps命令的10个例子
  17. WIN8 64bit的系统下 使用Razer地狱狂蛇驱动v2.0汉化版会死机...
  18. VMware12 虚拟机共享文件夹磁盘映射设置方法
  19. 【STM32Cube笔记】15-数模转换AD/DA
  20. [分形几何] 1.3 Koch曲线python可视化

热门文章

  1. 两列布局(3种解决方案)
  2. 不平衡样本的分类实践---Credit-Card-Fraud-Detection
  3. UCGUI使用外部字库芯片显示汉字
  4. java计算今天是今年的第几周_java calendar类根据当前日期时间,计算当前日期在当前月是第几周,与周跨月问题,...
  5. 计算机香港专业学校排名,去香港读计算机专业什么学校好
  6. arcgis desktop和arcgis engin连接postgresql数据库连接需要的类库
  7. linux下制作win7安装U盘
  8. 【移动端】手机界面的设计尺寸
  9. 两万字:讲述微信小程序之组件
  10. list_ndarray_csr_lil占用空间比较