这次考试后面心态爆炸了。。。发现刚了2h的T2是假的之后就扔掉了,草率地打了个骗分

T1只会搜索和m=0

最先做的T3,主要是发现部分分很多,当时第一眼看上去有87分(眼瞎了)。

后来想了想,感觉一条链不可做,69分

码出来69分之后去测了一下第二个大样例,发现跑了2.6s,心态爆炸,预计得分47

出分之后发现把4000的22分拿到了,有69分。

于是成功凭借T3苟进rk3

T1.

  是个容斥好题,考场上一直在想如何对点容斥,想到考试结束也没想出来。

  正解是容斥边。

T2.

  欧拉回路

T3.

  考试时用了0.5h切掉69分,想说一下,和正解思路完全不一样。

  脸哥和正解都是将整体的式子化简求解,其实这个式子就是树上任意两点距离平方之和,因此我们可以考虑每个点对于答案的贡献。

  考虑树上dp,如何从儿子的答案转移到父亲

  我们令al[i]表示子树中所有点到i的距离之和,ans[i]表示子树中所有点到i的距离平方之和,siz[i]表示子树大小,w[i]表示i到父亲的距离。

  那么有

  ans[fa]+=ans[i]+2*al[i]*w[i]+w[i]*w[i]*siz[y]

 al[fa]+=al[i]+siz[i]*w[i]

 于是我们就可以求出来ans[1],然后我们可以通过上面这个式子进行换根,于是我们可以在O(n)的复杂度内求出解

  总复杂度O(nq),常数较大,代码实现很简单。

  

 1 #include<bits/stdc++.h>
 2 #define mod 1000000007
 3 #define ll long long
 4 using namespace std;
 5 inline ll read(){
 6     int x=0;
 7     char ch=getchar();
 8     while(ch<'0'||ch>'9')ch=getchar();
 9     while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-48,ch=getchar();
10     return x;
11 }
12 int n,f[100005],fi[100005],to[100005],ne[100005],tot,sb,q;
13 ll siz[100005],al[100005],fang[100005],ans,ni,w[100005];
14 inline void add(int x,int y){
15     ne[++tot]=fi[x];
16     fi[x]=tot;
17     to[tot]=y;
18 }
19 void dfs(int x){
20     siz[x]=1;al[x]=0,fang[x]=0;
21     for(int i=fi[x];i;i=ne[i]){
22         int y=to[i];
23         dfs(y);
24         al[x]=(al[x]+al[y]+(siz[y]*w[y]))%mod;
25         fang[x]=(fang[x]+fang[y]+al[y]*w[y]*2+w[y]*w[y]%mod*siz[y])%mod;
26         siz[x]+=siz[y];
27     }
28 }
29 void dfs2(int x){
30     ans=(ans+fang[x])%mod;
31     for(int i=fi[x];i;i=ne[i]){
32         int y=to[i];
33         ll  fx=(fang[x]-fang[y]-al[y]*w[y]*2-w[y]*w[y]%mod*siz[y])%mod,
34             ax=(al[x]-al[y]-(siz[y]*w[y]))%mod;
35         fang[y]=(fang[y]+fx+ax*w[y]*2+w[y]*w[y]%mod*(n-siz[y]))%mod;
36         al[y]=(al[y]+ax+(n-siz[y])*w[y])%mod;
37         dfs2(y);
38     }
39 }
40 int main(){
41     sb=read(),n=read(),q=read();
42     ni=50000004;
43     for(int i=2;i<=n;i++)f[i]=read(),w[i]=read(),add(f[i],i);
44     dfs(1);
45     dfs2(1);
46     printf("%lld\n",(ans+mod)%mod*ni%mod);
47     while(q--){
48         int u=read();
49         ll ad=read();
50         w[u]=(w[u]+ad)%mod;
51         dfs(1);
52         ans=0;
53         dfs2(1);
54         printf("%lld\n",(ans+mod)%mod*ni%mod);
55     }
56     return 0;
57 }

View Code

正解不会,咕了

转载于:https://www.cnblogs.com/hzoi-cbx/p/11374107.html

NOIP模拟测试25相关推荐

  1. NOIP模拟测试25「字符串·乌鸦喝水·所陀门王的宝藏(陀螺王)」

    字符串 题解 没看出catalan怎么办 dp打表啊! 考虑大力dp拿到30分好成绩!顺便收获一张表 打表发现$C_{n+m}^{m}-C_{n+m}^{m-1}$ 仔细观察然后发现其实就是之前的网格 ...

  2. 8.18 NOIP模拟测试25(B) 字符串+乌鸦喝水+所驼门王的宝藏

    T1 字符串 卡特兰数 设1为向(1,1)走,0为向(1,-1)走,限制就是不能超过$y=0$这条线,题意转化为从(0,0)出发,走到(n+m,n-m)且不越过$y=0$,然后就裸的卡特兰数,$ans ...

  3. NOIP模拟测试19「count·dinner·chess」

    反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍 ...

  4. NOIP模拟测试49·50「养花·折射·画作·施工·蔬菜·联盟」

    一套题 养花 题解 分块\主席树 这里我用的是主席树 查询分段$1-(k-1)$找最大的,能向右找就向右找 for(ll nowl=1,nowr=k-1;nowl<=maxx;nowl+=k,n ...

  5. NOIP模拟测试21「折纸·不等式」

    折纸 题解 考试时无限接近正解,然而最终也只是接近而已了 考虑模拟会爆炸,拿手折纸条试一试,很简单 考你动手能力 代码 #include<bits/stdc++.h> using name ...

  6. NOIP模拟测试18「引子·可爱宝贝精灵·相互再归的鹅妈妈」

    待补 引子 题解 大模拟,注意细节 代码1 #include<bits/stdc++.h> using namespace std; int n,m;char a[1005][1005]; ...

  7. NOIP模拟测试10「大佬·辣鸡·模板」

    大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...

  8. NOIP模拟测试19

    T1: 题目大意:将一颗有N个节点的树分割,使得每个联通块大小相等,问一共有多少方案.(N<=1000000) 首先,一条很显然的性质,每个联通块的大小一定是N的因子. 然后,我们可以对于每个因 ...

  9. 2019.8.12 NOIP模拟测试18 反思总结

    写个博客总是符合要求的对吧 回来以后第一次悄悄参加考试,昨天全程围观- 然后喜提爆炸120分wwwwwwwww T1用了全机房最慢的写法,导致改掉死循环T掉的一个点以后还是死活过不了最后一个点.T2全 ...

最新文章

  1. python神经网络风格_[Deep-Learning-with-Python]使用LSTM生成尼采风格文章
  2. elasticsearch如何安全重启
  3. IOS-Core Data的使用
  4. oracle取本月最后一天是星期几_oracle SQL语句取本周本月本年的数据
  5. SharePoint无代码工作流设计开发实例——交通费报销流程(一)
  6. find VS not looking for VS2015
  7. 雪城大学信息安全讲义 3.1 Set-UID 机制如何工作
  8. highgui java opencv_OpenCV在C Qt应用程序中的highgui
  9. SQL Server中的筛选后的统计信息和CE模型变化
  10. python学习 (二十九) range函数
  11. IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)
  12. Nexon由Xsolla全球支付服务
  13. JavaWeb初级篇-HttpPost使用教程
  14. JavaCV的摄像头实战之一:基础
  15. 墨珩科技 | 密码行业标准制定的参与者
  16. Vpay是什么?Vpay怎么玩?用Vpay有什么好处?Vpay系统开发
  17. 同花顺股票交易接口测试
  18. LSM303DLH六轴角度传感器驱动
  19. 精准医学:NGS和MFC方法在多发性骨髓瘤MRD评估中的比较|预后监测
  20. eclipse连接mysql数据库

热门文章

  1. 退出页面 数据保留_IOS保留数据换appid教程(副号暂时无法解锁登录看这里)
  2. RHEL下SendMail修改发邮箱地址
  3. cocos2d-x 3.2 项目开发 ValueMap 的遍历
  4. Deal with relational data using libFM with blocks
  5. ZOJ 3635 Cinema in Akiba[ 大规模阵列 ]
  6. 给原型扩展一下tirm方法
  7. 《自己动手写操作系统》读书笔记——初识保护模式
  8. 利用Python抓取搜索引擎结果
  9. Effective Python笔记
  10. 图像金字塔:高斯金字塔vs拉普拉斯金字塔