联合权值——o(n)做法
来源:互联网 发布:linux socket多线程 编辑:程序博客网 时间:2024/06/16 12:01
szj想了个没有存图的做法,存了每个顶点所关联顶点的权值和。例如,顶点1关联顶点a1,a2,a3;则第一条边是a1,第二次是a1*a2,第三次就是a3*(a1+a2)
#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;const int MaxN=200000;const int MOD=10007;int n;long long f[MaxN],t[MaxN];long long value[MaxN],vs[MaxN];long long sum[MaxN],Max[MaxN];int main(){ scanf("%d",&n); for(int i=1;i<=n-1;++i){ scanf("%lld%lld",f+i,t+i); } for(int i=1;i<=n;++i){ scanf("%lld",value+i); } long long ans1=0,ans2=0; for(int i=1;i<=n-1;++i){ ans1=max(ans1,max(Max[f[i]]*value[t[i]],Max[t[i]]*value[f[i]]));//求最大值 ans2=(ans2+(value[f[i]]*sum[t[i]])+(value[t[i]]*sum[f[i]]));//求总和 sum[f[i]]+=value[t[i]]; sum[t[i]]+=value[f[i]]; Max[f[i]]=max(Max[f[i]],value[t[i]]); Max[t[i]]=max(Max[t[i]],value[f[i]]); } printf("%lld %lld\n",ans1,2*ans2%MOD); return 0; }
阅读全文
0 0
- 联合权值——o(n)做法
- 【NOIP2013提高组T5】花匠-O(n)横扫做法
- 1/X+1/Y=1/N!的两种O(n)做法
- N—Queen 生成排列+O(n)判断
- 联合权值——数论
- 树上距离——联合权值
- 最长递增子序列的求解(O(n*n),O(nlogn))——动态规划
- 题目:[NOIP1999]拦截导弹(最长非递增子序列DP) O(n^2)和O(n*log(n))的两种做法
- 娱乐之 ——用C语言打印 helloword 的 N 中做法(待续)
- 时间为O(n)排序——计数排序
- O(n)建堆——知识补充
- (C++) 无重复随机数 ——o(n) .1
- iOS框架介绍——N&O&P字头
- 动态规划——triangle空间复杂度O(n)
- 最小的k个数——O(n )解法
- O(n)
- 1.61 三角形O(nlogn)做法
- 1.61 三角形O(nlogn)做法
- 想跳槽到互联网行业,一线和新一线城市,有哪些特别有潜力的互联网公司呢?
- 确定你真的有价值判断
- c++基础之字符串的插入与删除
- LWC 49:675. Cut Off Trees for Golf Event
- 【数据结构】算法时间复杂度分析
- 联合权值——o(n)做法
- Turtlebot3入门手册之八:Realsense r200安装与测试
- 机器学习基本功
- C语言位域
- 【Android】获取webview文章的标题
- idea常用快捷键
- SpannableString文字操作
- Leetcode(W1):169.Majority Element
- 【LeetCode】4.Median of Two Sorted Arrays