题意

有一颗有n个节点的有根树,根节点编号时1,每个结点都有一个值ai,开始的时候,所有节点的值都是0.

我们有q个操作,操作只有两种类型

1 v x k,a[v]+=x,a[v']+=x-k,a[v"]+=x-2*k... v'是结点v的孩子 。

2 v 输出a[v]mod 1e9+7。

分析

dfs序+线段树

下面的代码TLE了,一会再改,感觉没啥毛病哇

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
typedef long long LL; const int maxn=+;
const int MOD=;
int n,T,q,num ;
vector<int>child[maxn];
LL a[maxn],r[maxn],dep[maxn],val[maxn];
void dfs(LL u){
num++;
a[num]=u;
for(int i=;i<child[u].size();i++){
int v=child[u][i];
dep[v]=dep[u]+;
dfs(v);
}
r[u]=a[num];
return ;
}
LL addv[*maxn],kv[*maxn];
int ql,qr;
LL v,k; void update(int o,int L,int R){
if(ql<=L&&qr>=R){
addv[o]=(add[o]%MOD+v%MOD)%MOD;
kv[o]=(kv[o]%MOD+k%MOD)MOD;
return;
}
int M=L+(R-L)/;
if(ql<=M)
update(*o,L,M);
if(qr>M)
update(*o+,M+,R);
return;
}
//找到v的值
LL query(int o,int L,int R,LL adv,LL adk){
if(L==R){
return addv[o]+adv-dep[val[L]]*(kv[o]+adk);
}
int M=L+(R-L)/;
if(v<=M)
return query(*o,L,M,(adv%MOD+addv[o]%MOD)%MOD,(adk+kv[o])%MOD);
if(v>M)
return query(*o+,M+,R,(adv%MOD+addv[o]%MOD)%MOD,(adk%MOD+kv[o]%MOD)%MOD);
}
int main(){
scanf("%d",&T);
for(int t=;t<=T;t++){
scanf("%d",&n);
for(int i=;i<=n;i++)child[i].clear();
num=;
for(int i=;i<=n;i++){
int x;
scanf("%d",&x);
child[x].push_back(i);
}
dep[]=;
dfs();
for(int i=;i<=n;i++)val[a[i]]=i;
memset(addv,,sizeof(addv));
memset(kv,,sizeof(kv));
scanf("%d",&q);
for(int i=;i<=q;i++){
int ty;
scanf("%d",&ty);
if(ty==){
int vv;
LL x;
scanf("%d%lld%lld",&vv,&x,&k);
ql=a[vv],qr=r[vv],v=x+dep[vv]*k;
// cout<<ql<<" "<<qr<<endl;
update(,,n);
}else{
int vv;
scanf("%d",&vv);
v=a[vv];
cout<<query(,,n,,)%MOD<<endl;
}
} /* for(int i=1;i<=num;i++)
printf("%d ",a[i]);
printf("\n");
for(int i=1;i<=n;i++){
printf("%d %d\n",i,r[i]);
}*/
}
return ;
}

【FZU 2277】Change的更多相关文章

  1. 【补】【FZU月赛】【20150515】【待续】

    A FZU-2054 水题,比较A,B双方的最大值即可. B FZU-2055 string,截取‘.’之前和之后然后和给出的文件夹名和拓展名比较就好了啊,不明白为什么那么多人错. 代码: #incl ...

  2. 【FZU - 2150】Fire Game(bfs)

    --> Fire Game 直接写中文了 Descriptions: 两个熊孩子在n*m的平地上放火玩,#表示草,两个熊孩子分别选一个#格子点火,火可以向上向下向左向右在有草的格子蔓延,点火的地 ...

  3. F - Change FZU - 2277 (DFS序+线段树)

    题目链接: F - Change FZU - 2277 题目大意: 题意: 给定一棵根为1, n个结点的树. 有q个操作,有两种不同的操作 (1) 1 v k x : a[v] += x, a[v ' ...

  4. 【深入浅出jQuery】源码浅析2--奇技淫巧

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  5. 【静默安装】configToolAllCommands响应文件问题

    [静默安装]configToolAllCommands响应文件问题 客户在静默安装RAC 12.1.0.2的时候有如下的输出: Successfully Setup Software. As inst ...

  6. BZOJ 3343: 教主的魔法 [分块]【学习笔记】

    3343: 教主的魔法 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1172  Solved: 526[Submit][Status][Discus ...

  7. 【jQuery 分页】jQuery分页功能的实现

    自写的jQuery实现分页功能的分页组件: 功能效果如下: 分页组件就是上图中的三部分, 分别放在表格上部  和下部 . 其中, 1>>>页面的代码如下: product.jsp 其 ...

  8. 【uTenux实验】互斥体

    互斥体,维基百科中交互斥锁.其定义是这样的:互斥锁(英语:英语:Mutual exclusion,缩写 Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制 ...

  9. 【计算机视觉领域】常用的 feature 提取方法,feature 提取工具包

    [计算机视觉领域]常用的 feature 提取方法,feature 提取工具包 利用 VL 工具包进行各种特征的提取: VL 工具包官网地址:http://www.vlfeat.org/index.h ...

随机推荐

  1. 如何回复在Git中误操作删除的文件?

    不小心的操作,删除了某些文件 某天很高大地用上了git来管理版本,分布式版本管理工具,好是好,但是还不是很熟悉,结果某天一不小心就从本地仓库中删除了若干个文件,该如何找回这些文件呢? 调查现场 git ...

  2. JavaScript 中 this:

    在绑定事件时,this指定的是被绑定的那个html元素,比如: 结果: press里的this指的就是canvas.

  3. C#泛型类的类型约束

    是使用泛型时,T默认情况下是不可以被初始化的,只能通过传值来赋值,这个时候可以使用类型约束来保证T是可以被约束的. .NET支持的类型参数约束有以下五种: where T: struct //T必须是 ...

  4. 【MFC】CDC::BitBlt介绍

    CDC::BitBlt介绍 2011-11-04 08:25 19576人阅读 评论(6) 收藏 举报 摘自: http://blog.csdn.net/bberdong/article/detail ...

  5. header("Location:http://www.baidu.com");

    php 中的跳转函数 header("Location:http://www.baidu.com"); 但是一定要放在文件的开头   不允许有任何输出. 否则在之前添加  ob_s ...

  6. [转载] FFmpeg源代码简单分析:常见结构体的初始化和销毁(AVFormatContext,AVFrame等)

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  7. Oracle 实用技巧

    一.rlwrap 在 linux中使用sqlplus对数据库进行操作,常常由于敲错命令或需要反复执行某条语句,需要像linux本身有的历史回调的功能, rlwrap 可以用来支持oracle下sqlp ...

  8. 【占位】HihoCoder 1160 : 攻城略地(并查集好题)

    攻城略地 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 A.B两国间发生战争了,B国要在最短时间内对A国发动攻击.已知A国共有n个城市(城市编号1, 2, …, n),城 ...

  9. SQL Server: Top 10 Secrets of a SQL Server Expert

    转载自:http://technet.microsoft.com/en-us/magazine/gg299551.aspx Many companies have downsized their IT ...

  10. Android 比对APK的签名信息

    https://www.jianshu.com/p/8583f6a966e2 在做App的时候经常会有验证apk是否为正版的需求,比如一些接入第三方支付的app,接入微信sdk也是需要apk签名信息的 ...