P1351 联合权值
为了写一写LCA,我就按照标签找……结果这道题我写完竟然没用LCA……真是神奇。。。
很多人(包括我),首先就想到了要枚举每一个点,再枚举任意这个点的两个儿子,可是显然O(n2)会T……
其实我们只要线性扫一遍就可以了,利用小学学到的乘法分配率,边走边加val,这样下一个点和val的乘积就是它和这之前所有的点的乘积之和,最后就是sum。
当然,点对反过来就是一组新的点对,所以,随后的sum要乘2。
而对于最大值,只要每一次更新我扫过的这些点权里最大的数是多少(在一次外层循环中),和新的点权相乘,看看能不能更新最大解即可。
对了,记得看看是给谁取模。
代码如下:
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; #define maxn 4000000 #define mod 10007 #define int long long int head[maxn],to[maxn],nxt[maxn],w[maxn]; int n,cnt; void add(int a,int b) {to[++cnt]=b;nxt[cnt]=head[a];head[a]=cnt; } main() {scanf("%lld",&n);for(int i=1;i<=n-1;i++){int a,b;scanf("%lld%lld",&a,&b);add(a,b);add(b,a);} for(int i=1;i<=n;i++)scanf("%lld",&w[i]);int sum=0,Max=0;int fir,val,maxpo;for(int i=1;i<=n;i++){fir=head[i];val=w[to[fir]]%mod;maxpo=w[to[fir]];fir=nxt[fir];for(; fir; fir=nxt[fir]){sum=(sum+val*w[to[fir]])%mod;val=(val+w[to[fir]])%mod;Max=max(Max,maxpo*w[to[fir]]);maxpo=max(maxpo,w[to[fir]]);}}printf("%lld %lld",Max,(2*sum)%mod);return 0; }
转载于:https://www.cnblogs.com/popo-black-cat/p/10301580.html
P1351 联合权值相关推荐
- P1351 联合权值[鬼畜解法]
题目描述 无向连通图 G 有 n 个点,n−1 条边.点从 1 到 n 依次编号,编号为 i 的点的权值为 Wi,每条边的长度均为 1.图上两点 (u,v) 的距离定义为 u 点到 v 点的最短距离 ...
- 洛谷P1351 联合权值(树形dp)
题意 题目链接 Sol 一道很简单的树形dp,然而被我写的这么长 分别记录下距离为\(1/2\)的点数,权值和,最大值.以及相邻儿子之间的贡献. 树形dp一波.. #include<bits/s ...
- 联合权值 NOIP2014 提高组 Day1 T2
codevs 3728 联合权值 题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距 ...
- NOIp 2014 #2 联合权值 Label:图论 !!!未AC
题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距离定义为u 点到v 点的最短距离. ...
- [NOIP2014]联合权值
NOIp2014提高组 [题目描述] 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距 ...
- [Luogu 1351] NOIP2014 联合权值
[Luogu 1351] NOIP2014 联合权值 存图,对于每一个点 \(u\),遍历它的所有邻接点.以 \(u\) 为中转点的点对中,\((x,y)\) 的联合权值 \(w_x \cdot w_ ...
- 【学术篇】luogu1351[NOIP2014 提高组]联合权值
一道提高组的题..... 传送门:题目在这里.... 现在都懒得更自己的blog了,怕是太颓废了_ (:з」∠) _ 好久没做题了,手都生了.(好吧其实是做题方面手太生了) 这题我都不想讲了,把代码一 ...
- 洛谷 1351 联合权值
[题解] 每个点维护各个儿子的前后缀最大值.权值和,这样就可以统计儿子之间相乘的答案.然后每个节点再乘它的祖父的权值去更新答案即可. 1 #include<cstdio> 2 #inclu ...
- Jzoj3931【NOIP2014day1官方数据】联合权值
题意略过,口胡正解 对于每个节点i,我们求出每个与i相连的节点的权值和s,那么i的贡献就是∑d[j]*(s-d[j]) 求最大就排个序咯 #include<stdio.h> #includ ...
最新文章
- SilverLight学习笔记--建立Silverlight自定义控件(1)--外观设计
- #linux进阶#wget
- because the principal dbo does not exist 问题解决方法
- matlab中“存储空间不足,无法处理此命令”
- 求数组中各个元素的个数?
- 【IDEA】IDEA报错 illegal character U+00A0异常解决
- 计算机基础知识判断题答案,计算机基础知识试题及答案判断题模板.docx
- 阿里、京东被曝全面“缩招”;YY CEO 身体植入芯片;Oculus 创始人离职 | 极客头条...
- android 4.3 模拟器,模拟器上的Android 4.3
- Shell.ItemTemplate
- 服务器挂软件系统,云服务器挂软件用什么系统
- 学习 Java,使用哪个版本最好
- 超像素分割SLIC与SLIC0(SLIC Zero)算法的区别
- gzip already installed and latest version解决方法
- 【解决篇】映美FP-530K+打印发票卡纸,色带安装问题
- 【博客园-问题反馈】使用谷歌浏览器 百度图床图片无法显示
- 福利 | 区块链寒冬的“另类”火锅吃法
- WiFi DFS(动态频率选择)
- Android 使用CameraX实现预览/拍照/录制视频/图片分析/对焦/缩放/切换摄像头等操作
- Xilinx 的FFT IP核使用方法(配置为FFT 、IFFT两种模式)
热门文章
- android设计招式之美,麦可网Android设计招式之美
- Android 7.0 SystemUI 之启动和状态栏和导航栏简介
- android锁屏唤醒并解锁屏幕
- CMU 11642 Search Engines - 大纲梳理
- 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
- 圆形头像CircleImageView源码浅析
- php将pdf文件存入数据库,关于tcpdf:在我的php数据库中制作pdf文件
- python 播放视频 ftp_利用Python快速搭建HTTPFTP服务器
- 电脑组装与维护教程_小白不会装机?教你如何自己组装一台电脑。装机图文教程...
- python输入输出有问题_使用pySerial从Python获取输入/输出错误