NOIP模拟测试25
这次考试后面心态爆炸了。。。发现刚了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),常数较大,代码实现很简单。
![](/assets/blank.gif)
![](/assets/blank.gif)
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相关推荐
- NOIP模拟测试25「字符串·乌鸦喝水·所陀门王的宝藏(陀螺王)」
字符串 题解 没看出catalan怎么办 dp打表啊! 考虑大力dp拿到30分好成绩!顺便收获一张表 打表发现$C_{n+m}^{m}-C_{n+m}^{m-1}$ 仔细观察然后发现其实就是之前的网格 ...
- 8.18 NOIP模拟测试25(B) 字符串+乌鸦喝水+所驼门王的宝藏
T1 字符串 卡特兰数 设1为向(1,1)走,0为向(1,-1)走,限制就是不能超过$y=0$这条线,题意转化为从(0,0)出发,走到(n+m,n-m)且不越过$y=0$,然后就裸的卡特兰数,$ans ...
- NOIP模拟测试19「count·dinner·chess」
反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍 ...
- NOIP模拟测试49·50「养花·折射·画作·施工·蔬菜·联盟」
一套题 养花 题解 分块\主席树 这里我用的是主席树 查询分段$1-(k-1)$找最大的,能向右找就向右找 for(ll nowl=1,nowr=k-1;nowl<=maxx;nowl+=k,n ...
- NOIP模拟测试21「折纸·不等式」
折纸 题解 考试时无限接近正解,然而最终也只是接近而已了 考虑模拟会爆炸,拿手折纸条试一试,很简单 考你动手能力 代码 #include<bits/stdc++.h> using name ...
- NOIP模拟测试18「引子·可爱宝贝精灵·相互再归的鹅妈妈」
待补 引子 题解 大模拟,注意细节 代码1 #include<bits/stdc++.h> using namespace std; int n,m;char a[1005][1005]; ...
- NOIP模拟测试10「大佬·辣鸡·模板」
大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...
- NOIP模拟测试19
T1: 题目大意:将一颗有N个节点的树分割,使得每个联通块大小相等,问一共有多少方案.(N<=1000000) 首先,一条很显然的性质,每个联通块的大小一定是N的因子. 然后,我们可以对于每个因 ...
- 2019.8.12 NOIP模拟测试18 反思总结
写个博客总是符合要求的对吧 回来以后第一次悄悄参加考试,昨天全程围观- 然后喜提爆炸120分wwwwwwwww T1用了全机房最慢的写法,导致改掉死循环T掉的一个点以后还是死活过不了最后一个点.T2全 ...
最新文章
- python神经网络风格_[Deep-Learning-with-Python]使用LSTM生成尼采风格文章
- elasticsearch如何安全重启
- IOS-Core Data的使用
- oracle取本月最后一天是星期几_oracle SQL语句取本周本月本年的数据
- SharePoint无代码工作流设计开发实例——交通费报销流程(一)
- find VS not looking for VS2015
- 雪城大学信息安全讲义 3.1 Set-UID 机制如何工作
- highgui java opencv_OpenCV在C Qt应用程序中的highgui
- SQL Server中的筛选后的统计信息和CE模型变化
- python学习 (二十九) range函数
- IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)
- Nexon由Xsolla全球支付服务
- JavaWeb初级篇-HttpPost使用教程
- JavaCV的摄像头实战之一:基础
- 墨珩科技 | 密码行业标准制定的参与者
- Vpay是什么?Vpay怎么玩?用Vpay有什么好处?Vpay系统开发
- 同花顺股票交易接口测试
- LSM303DLH六轴角度传感器驱动
- 精准医学:NGS和MFC方法在多发性骨髓瘤MRD评估中的比较|预后监测
- eclipse连接mysql数据库
热门文章
- 退出页面 数据保留_IOS保留数据换appid教程(副号暂时无法解锁登录看这里)
- RHEL下SendMail修改发邮箱地址
- cocos2d-x 3.2 项目开发 ValueMap 的遍历
- Deal with relational data using libFM with blocks
- ZOJ 3635 Cinema in Akiba[ 大规模阵列 ]
- 给原型扩展一下tirm方法
- 《自己动手写操作系统》读书笔记——初识保护模式
- 利用Python抓取搜索引擎结果
- Effective Python笔记
- 图像金字塔:高斯金字塔vs拉普拉斯金字塔