为了写一写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 联合权值相关推荐

  1. P1351 联合权值[鬼畜解法]

    题目描述 无向连通图 G 有 n 个点,n−1 条边.点从 1 到 n 依次编号,编号为 i 的点的权值为 Wi​,每条边的长度均为 1.图上两点 (u,v) 的距离定义为 u 点到 v 点的最短距离 ...

  2. 洛谷P1351 联合权值(树形dp)

    题意 题目链接 Sol 一道很简单的树形dp,然而被我写的这么长 分别记录下距离为\(1/2\)的点数,权值和,最大值.以及相邻儿子之间的贡献. 树形dp一波.. #include<bits/s ...

  3. 联合权值 NOIP2014 提高组 Day1 T2

    codevs 3728 联合权值 题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距 ...

  4. NOIp 2014 #2 联合权值 Label:图论 !!!未AC

    题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距离定义为u 点到v 点的最短距离. ...

  5. [NOIP2014]联合权值

    NOIp2014提高组 [题目描述] 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i   ,每条边的长度均为1 .图上两点( u ,  v ) 的距 ...

  6. [Luogu 1351] NOIP2014 联合权值

    [Luogu 1351] NOIP2014 联合权值 存图,对于每一个点 \(u\),遍历它的所有邻接点.以 \(u\) 为中转点的点对中,\((x,y)\) 的联合权值 \(w_x \cdot w_ ...

  7. 【学术篇】luogu1351[NOIP2014 提高组]联合权值

    一道提高组的题..... 传送门:题目在这里.... 现在都懒得更自己的blog了,怕是太颓废了_ (:з」∠) _ 好久没做题了,手都生了.(好吧其实是做题方面手太生了) 这题我都不想讲了,把代码一 ...

  8. 洛谷 1351 联合权值

    [题解] 每个点维护各个儿子的前后缀最大值.权值和,这样就可以统计儿子之间相乘的答案.然后每个节点再乘它的祖父的权值去更新答案即可. 1 #include<cstdio> 2 #inclu ...

  9. Jzoj3931【NOIP2014day1官方数据】联合权值

    题意略过,口胡正解 对于每个节点i,我们求出每个与i相连的节点的权值和s,那么i的贡献就是∑d[j]*(s-d[j]) 求最大就排个序咯 #include<stdio.h> #includ ...

最新文章

  1. SilverLight学习笔记--建立Silverlight自定义控件(1)--外观设计
  2. #linux进阶#wget
  3. because the principal dbo does not exist 问题解决方法
  4. matlab中“存储空间不足,无法处理此命令”
  5. 求数组中各个元素的个数?
  6. 【IDEA】IDEA报错 illegal character U+00A0异常解决
  7. 计算机基础知识判断题答案,计算机基础知识试题及答案判断题模板.docx
  8. 阿里、京东被曝全面“缩招”;YY CEO 身体植入芯片;Oculus 创始人离职 | 极客头条...
  9. android 4.3 模拟器,模拟器上的Android 4.3
  10. Shell.ItemTemplate
  11. 服务器挂软件系统,云服务器挂软件用什么系统
  12. 学习 Java,使用哪个版本最好
  13. 超像素分割SLIC与SLIC0(SLIC Zero)算法的区别
  14. gzip already installed and latest version解决方法
  15. 【解决篇】映美FP-530K+打印发票卡纸,色带安装问题
  16. 【博客园-问题反馈】使用谷歌浏览器 百度图床图片无法显示
  17. 福利 | 区块链寒冬的“另类”火锅吃法
  18. WiFi DFS(动态频率选择)
  19. Android 使用CameraX实现预览/拍照/录制视频/图片分析/对焦/缩放/切换摄像头等操作
  20. Xilinx 的FFT IP核使用方法(配置为FFT 、IFFT两种模式)

热门文章

  1. android设计招式之美,麦可网Android设计招式之美
  2. Android 7.0 SystemUI 之启动和状态栏和导航栏简介
  3. android锁屏唤醒并解锁屏幕
  4. CMU 11642 Search Engines - 大纲梳理
  5. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
  6. 圆形头像CircleImageView源码浅析
  7. php将pdf文件存入数据库,关于tcpdf:在我的php数据库中制作pdf文件
  8. python 播放视频 ftp_利用Python快速搭建HTTPFTP服务器
  9. 电脑组装与维护教程_小白不会装机?教你如何自己组装一台电脑。装机图文教程...
  10. python输入输出有问题_使用pySerial从Python获取输入/输出错误