原题:

蒜头君有一棵有根树,树的每一边都有边权,蒜头君想知道任意两点间最短距离之和为多少。另外,由于各种原因,蒜头君的树的边的边权会发生若干次改变,蒜头君想让你告诉他,每一次改变后,任意两点间最短距离之和为多少?

输入格式

第一行一个正整数 n,表示蒜头君的树上的结点个数。

接下来 n− 行,每行两个正整数xi​​,yi​​, xi​​表示i+ 号结点的父亲结点的编号,保证其父结点编号小于自己编号。yi​​ 表示 i+ 号结点的父亲结点与自己间边的距离。

接下来一行一个整数 m,表示树的边权发生改变的次数。

接下来 m 行,每行两个正整数 a,b,表示将 a结点与其父亲结点之间的距离改为b,保证 a≥。

输出格式

先输出一个整数,表示对于原始的树任意两点间最短距离之和。

接下来 m 行,每行输出一个整数,表示每一次改变后,任意两点间最短距离之和。

数据规模

样例输入

4
1 1
1 1
1 1
1
2 2

样例输出

9
12

开始在想LCA啥的[某个人气急败坏的要树剖]但是肯定TLE

虽然研究了一道类似的题解
但最后还是自己写出来了[类似的→hdu2376]
就是给一棵树然后求任意两点的最短距离之和。然后给m次修改重新求和。
方法是每一条边的两段的节点个数相乘[乘法原理]然后再乘上边权。就是计算每条边被经过的次数。
中间的逻辑一定要推理明白。这道题出题人还是很良心的。每次给的都是这条边底下的节点,对于计算方便很多。
m次修改就很好计算了。将这条边的边权修改,把原来的减去再加上现在的即可。

这题因为写反了一个循环所以爆零了。好忧伤。

但是只有经历了爆零才能重获新生吧。

不想多说了。上代码hhhhh。

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std; int fa[100000];
long long sum[100000],bian[100000]; int main()
{
int n,m,j,i,k,w,e,s;
long long ans;
scanf("%d",&n); for(i=2;i<=n;i++)
{
scanf("%d%lld",&fa[i],&bian[i]);
sum[i]=1;
}
for(i=n;i>=2;i--)//这个循环要是逆序因为前面的要依赖后面的
{
sum[fa[i]]+=sum[i];
} ans=0;
for(i=1;i<=n;i++)
{
ans+=bian[i]*sum[i]*(n-sum[i]);
}
printf("%lld\n",ans); scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d%d",&j,&k); ans-=bian[j]*sum[j]*(n-sum[j]);
bian[j]=k;
ans+=bian[j]*sum[j]*(n-sum[j]);
printf("%lld\n",ans);
}
return 0;
}

计蒜客NOIP模拟D1T2的更多相关文章

  1. 计蒜客NOIP模拟赛4 D1T2小X的密室

    小 X 正困在一个密室里,他希望尽快逃出密室. 密室中有 N 个房间,初始时,小 X 在 1 号房间,而出口在 N 号房间. 密室的每一个房间中可能有着一些钥匙和一些传送门,一个传送门会单向地创造一条 ...

  2. 计蒜客NOIP模拟赛(3) D1T2 信息传递

    一个数据包在一个无向网络中传递.在时刻0,该数据包将依照特定的概率随机抵达网络中的某个节点.网络可以看做一张完全带权无向图,包含N个节点,若t时刻数据包在节点i,则在t+1时刻,数据包被传递到节点j的 ...

  3. 计蒜客NOIP模拟赛(2) D1T2 表演艺术

    凡和邻家男孩玩完了纸牌,兴致很高,于是准备了一场表演艺术对抗赛. 他特意请来了很多表演艺术家,分成绿黑两队,进行名为 PK,实则捞金的表演. 凡为了捞金,开设了一个赌局,在比赛开始之前招揽人们来押注谁 ...

  4. 计蒜客NOIP模拟赛6 D1T1Diamond-square

    Diamond-square 算法是一种能够用于生成噪声的算法,现在我们考虑这个算法的一个变种. 你有一个 2^n\times 2^n2​n​​×2​n​​ 的网格,一共有 (2^n+1)^2(2​n ...

  5. 计蒜客NOIP模拟赛4 D2T1 鬼脚图

    鬼脚图,又称画鬼脚,在日本称作阿弥陀签,是一种经典游戏,也是一种简易的决策方法,常常用来抽签或决定分配组合. 下图就是一张鬼脚图,其包含若干条竖线和若干条横线.请注意,横线只能水平连接相邻的两条竖线, ...

  6. 计蒜客 NOIP模拟赛(3) D1T1火山喷发

    火山喷发对所有附近的生物具有毁灭性的影响.在本题中,我们希望用数值来模拟这一过程. 在环境里有 nnn 个生物分别具有 A1,A2,⋯,An​​点生命值,一次火山喷发总计 M轮,每轮造成 1点伤害,等 ...

  7. 计蒜客NOIP模拟赛(2) D1T1邻家男孩

    凡是一个具有领导力的孩子.现实生活中他特别喜欢玩一个叫做 UNO 的纸牌游戏,他也总是带着其他小朋友一起玩,然后战胜他们.慢慢地,他厌倦了胜利,于是准备发明一种新的双人纸牌游戏. 初始时,每个人手中都 ...

  8. 计蒜客NOIP模拟赛5 D1T1 机智的 AmyZhi

    那年一个雨季,AmyZhi 在校门外弯身买参考书. 这时 SiriusRen 走过来,一言不合甩给她一道“自认为”很难的题: --------------- 给你一个数字 NN(NN 的范围是 11  ...

  9. 计蒜客NOIP模拟赛4 D2T2 跑步爱天天

    YOUSIKI 在 noip2016 的一道<天天爱跑步>的题爆零后,潜心研究树上问题,成为了一代大师,于是皮皮妖为了测验他,出了一道题,名曰<跑步爱天天>. 有一个以 1 为 ...

随机推荐

  1. Angular:ViewProviders和Providers的区别

    在Angular中使用依赖注入(DI)的时候,我们一般会使用providers.其实要做同样的事我们还有另外一个选择:viewProviders. viewProviders允许我们定义只对组件的vi ...

  2. 观察者模式使用WebForm实现的例子

    观察者模式是一种可以描述一对多对象依赖关系的行为模式.当一个对象状态发生变化时,依赖它的其它对象会自动被更新状态.下面这个图展示了观察者模式的层级: 举个例子吧,我们某个报表界面现在有个dashboa ...

  3. UE4开发PSVR游戏,使用RazorGPU进行调试的方法

    打开Project Launcher,如果没有需要的Devkit平台目标,就点下方的Device Manager,右键Claim 相应的目标.如果已经出现在Project Launcher中,点击上方 ...

  4. instagram

    https://www.instagram.com/graphql/query/?query_hash=42323d64886122307be10013ad2dcc44&variables={ ...

  5. Hadoop ”No room for reduce task“问题处理

    早上发现一个任务有20个reduce,但是只有四个正常完成,剩余16个等待了8个小时才分配执行(集群槽位资源充足) 解决方法:查看了集群的log,发现有这种warn: -- ::, WARN org. ...

  6. 关于web开发中路径的问题的总结

    web开发中的一个困扰web开发新人的是路径问题: 1:项目的静态资源的根路径:http://localhost:8080/sqec-monitor 即是部署在web服务器中(比如tomcat)中项目 ...

  7. 140、spring webflux 高并发的spring组件

    最近公司可谓是风云变幻,年前说要拆开卖,后来说要整体卖,表示像我这种渣渣,始终逃脱不掉被卖的命运 下面进入正题 spring webflux 是spring 支持的高并发web框架,将每个http请求 ...

  8. Window 相关命令

    net user Administrator /Active:Yes NET USER 用于创建和修改计算机上的用户帐户.当不带选项使用本命令时,它会列出计算机上的用户帐户.用户帐户的信息存储在用户帐 ...

  9. 移动端安全 - 安卓Android - 工具相关

    渗透工具 drozer .安装文件解压后文件介绍 setup.exe ---安装 agent.apk ---用于调试 - 安装在安卓手机上 使用命令 . cd 到 drozer 安装目录 . adb ...

  10. 微信小程序(三)--小程序UI开发

    一.UI介绍 所谓的UI(user Interface)开发指的就是小程序应用界面的开发,在小程序开发框架中会为我们提供一系列的基础组件,例如HTML开发中为我们所提供的一些最基础的标签.需要注意的是 ...