【FZU 2277】Change
题意
有一颗有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的更多相关文章
- 【补】【FZU月赛】【20150515】【待续】
A FZU-2054 水题,比较A,B双方的最大值即可. B FZU-2055 string,截取‘.’之前和之后然后和给出的文件夹名和拓展名比较就好了啊,不明白为什么那么多人错. 代码: #incl ...
- 【FZU - 2150】Fire Game(bfs)
--> Fire Game 直接写中文了 Descriptions: 两个熊孩子在n*m的平地上放火玩,#表示草,两个熊孩子分别选一个#格子点火,火可以向上向下向左向右在有草的格子蔓延,点火的地 ...
- F - Change FZU - 2277 (DFS序+线段树)
题目链接: F - Change FZU - 2277 题目大意: 题意: 给定一棵根为1, n个结点的树. 有q个操作,有两种不同的操作 (1) 1 v k x : a[v] += x, a[v ' ...
- 【深入浅出jQuery】源码浅析2--奇技淫巧
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- 【静默安装】configToolAllCommands响应文件问题
[静默安装]configToolAllCommands响应文件问题 客户在静默安装RAC 12.1.0.2的时候有如下的输出: Successfully Setup Software. As inst ...
- BZOJ 3343: 教主的魔法 [分块]【学习笔记】
3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1172 Solved: 526[Submit][Status][Discus ...
- 【jQuery 分页】jQuery分页功能的实现
自写的jQuery实现分页功能的分页组件: 功能效果如下: 分页组件就是上图中的三部分, 分别放在表格上部 和下部 . 其中, 1>>>页面的代码如下: product.jsp 其 ...
- 【uTenux实验】互斥体
互斥体,维基百科中交互斥锁.其定义是这样的:互斥锁(英语:英语:Mutual exclusion,缩写 Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制 ...
- 【计算机视觉领域】常用的 feature 提取方法,feature 提取工具包
[计算机视觉领域]常用的 feature 提取方法,feature 提取工具包 利用 VL 工具包进行各种特征的提取: VL 工具包官网地址:http://www.vlfeat.org/index.h ...
随机推荐
- rebar安装及创建项目
rebar作为erlang开发中编译,构建,发布,打包,动态升级的常用工具,下面我记录下rebar工具的安装及使用 从源码安装rebar 1. 建立文件 install_rebar.sh 2. 拷贝如 ...
- Django实现微信公众号简单自动回复
在上篇博客阿里云部署django实现公网访问已经实现了了django在阿里云上的部署,接下来记录django实现微信公众号简单回复的开发过程,以方便日后查看 内容概要: (1)微信公众号声请 (2)微 ...
- CDlinux无线破解系统
cdlinux是一款功能非常强大的无线密码破解器,cdlinux兼容pin软件,不用抓取握手包.不用跑字典.不用客户端在线就能够破解无线路由器的密码,轻轻松松帮助用户达到蹭网的目的. 基本简介 cdl ...
- Web应用程序与Web网站及部署在IIS中
在Visual Studio可以创建 Web 应用程序项目或网站项目.通过选择 新建项目 或 打开项目 创建或打开一个 Web 应用程序项目在Visual Studio 文件 菜单. 通过选择 新建网 ...
- jfrog artifactory docker 安装试用
预备环境(docker 安装模式,使用的免费版本): docker-ce (启用镜像加速) 1. 镜像拉取 docker.bintray.io/jfrog/artifactory-oss 2. 启动 ...
- AES前后加密算法代码
首先下载aes.js加密工具类: 本文采用的是 AES/ECB/PKCS5Padding的加密方式进行加密的: js加密写法如下: <!DOCTYPE html> <html lan ...
- Oracle GoldenGate理论
1Oracle GoldenGate处理方法和支持的数据库Oracle GoldenGate在多样和异构的基础IT平台中,可以在事务级别上进行数据交换和数据操作.在保证交易完整性和最小的开销的条件下, ...
- FTP上传失败报错227 Entering Passive Model (222,111,8,111,10,40)
昨天为了一个ftp问题折腾了一天.问题背景:原来有个接口涉及到上传文件,服务端更换了ftp服务器,我们这边需要刷新连接服务端的ip和端口配置,代码没动.联调环境和验收环境都测试通过,一到生产环境就歇菜 ...
- unidac 执行Execute后取得受影响行数。
unidac 执行Execute后取得受影响行数. uniQuery2.SQL.Text := mmo2.Text; uniQuery2.Execute; mmo1.Lines.Add(Format( ...
- curl -I 说明
curl -I 查看header头信息