题解 NOIP2014 提高组-联合权值

基本思路:以每个点为中转点,则与之相邻的点组成的点对都可产生联合权值,并且全覆盖。

主要总结一下两种求权值和的思路:

思路1(容斥):记与 \(u\) 相邻的点的集合为 \(A\),则点 \(u\) 产生的贡献为

\[ans_u=(\sum_{v \in A}w_i)^2-\sum_{v \in A}w_v \times w_v
\]

对于每个中转点 \(u\) ,枚举 \(v\) 的同时直接求这两个式子,循环外结算。

void dfs(int u,int f){
ll tot=0,cz=0,cmax=-1,dmax=-1;
for(auto v:g[u]){
tot+=w[v];
cz=(cz+w[v]*w[v]%mod)%mod;
if(w[v]>cmax) dmax=cmax,cmax=w[v];
else if(w[v]>dmax) dmax=w[v];
if(v!=f) dfs(v,u);
}
ans=(ans+tot*tot%mod-cz)%mod;
mx=max(dmax*cmax,mx);
}

思路2(在线统计答案):在枚举到 \(v_i\) 时,考虑先让它和 \(v_{1 \sim i-1}\) 组合,最后输出时将答案乘2即可。

void dfs(int u,int f){
ll tot=0,cmax=-1,dmax=-1;
for(auto v:g[u]){
ans=(ans+tot*w[v])%mod;
tot+=w[v];
if(w[v]>cmax) dmax=cmax,cmax=w[v];
else if(w[v]>dmax) dmax=w[v];
if(v!=f) dfs(v,u);
}
mx=max(dmax*cmax,mx);
}
  • 重点记录一下思路2,没有尝试过这种思路。

题解 NOIP2014 提高组-联合权值的更多相关文章

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

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

  2. NOIP2014提高组 联合权值(距离为2的树形dp)

    联合权值 题目描述 无向连通图 GG 有 nn 个点,n-1n−1 条边.点从 11 到 nn 依次编号,编号为 ii 的点的权值为 W_iWi​,每条边的长度均为 11.图上两点 (u, v)(u, ...

  3. [NOIP2014提高组]联合权值

    题目:洛谷P1351.Vijos P1906.codevs3728.UOJ#16. 题目大意:有一个无向连通图,有n个点n-1条边,每个点有一个权值$W_i$,每条边长度为1.规定两个距离为2的点i和 ...

  4. [NOIp2014] luogu P1351 联合权值

    哎我博 4 了. 题目描述 无向连通图 GGG 有 nnn 个点,n−1n−1n−1 条边.点从 111 到 nnn 依次编号,编号为 iii 的点的权值为 WiW_iWi​,每条边的长度均为 111 ...

  5. [NOIP2014] 提高组 洛谷P1351 联合权值

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

  6. Noip2014 提高组 T2 联合权值 连通图+技巧

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

  7. NOIP2014提高组第二题联合权值

    还是先看题吧: 试题描述  无向连通图 G 有 n 个点,n-1 条边.点从 1 到 n 依次编号,编号为 i 的点的权值为 Wi ,每条边的长度均为 1.图上两点(u, v)的距离定义为 u 点到 ...

  8. 【NOIP2014提高组】联合权值

    https://www.luogu.org/problem/show?pid=1351 既然是一棵树,就先转化成有根树.有根树上距离为2的点对,路径可能长下面这样: 枚举路径上的中间点X. 第一种情况 ...

  9. 题解【luoguP1351 NOIp提高组2014 联合权值】

    题目链接 题意:给定一个无根树,每个点有一个权值.若两个点 \(i,j\) 之间距离为\(2\),则有联合权值 \(w_i \times w_j\).求所有的联合权值的和与最大值 分析: 暴力求,每个 ...

  10. NOIP 提高组 2014 联合权值(图论???)

    传送门 https://www.cnblogs.com/violet-acmer/p/9937201.html 题解: 相关变量解释: int n; int fa[maxn];//fa[i] : i的 ...

随机推荐

  1. 计算购物车价格Vue

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo

    ​不管是传统互联网还是移动互联网,实时数据传输都是刚需,比如以QQ.微信为代表的即时通信工具,能够实时传输文本和图片.其中一对一的图文通信叫做私聊,多对多的图文通信叫做群聊. 除了常见的图文即时通信, ...

  3. MFC的CBitmapButton的使用指南

    注意:此按钮使用前应该将按钮的属性:Owner Draw->True 注意:此按钮使用前应该将按钮的属性:Owner Draw->True 注意:此按钮使用前应该将按钮的属性:Owner ...

  4. PowerShell快速修改多个文件的名称

      本文介绍基于PowerShell语言,对文件夹中全部文件的名称加以批量替换.修改的方法.   在之前的文章中,我们介绍了基于Python语言,批量修改大量文件的名称的方法.当时我们修改文件名的需求 ...

  5. 全志T113s3工业开发板文章汇总

    全志T113s3工业开发板 T113开发交流QQ群:120575746 交流论坛:https://forums.100ask.net/c/aw/ 文章目录汇总 教程共计7章,下面是章节汇总:第0章_T ...

  6. 关于对 Tomcat 进行小版本升级的快速解决方案

    1.背景描述 原来的 Tomcat 在部署时,使用的是最新的版本 9.0.40 . 经过一段时间后,在原来的 Tomcat 版本中,发现存在漏洞. 因此,需要将旧版本(9.0.40)升级到没有漏洞的新 ...

  7. hook拼多多客服软件发消息,拼多多客服机器人代码,拼多多发消息代码

    最近由于工作需要,逆向了拼多多客服平台,能调用消息监听.消息发送.根据订单号发起会话,是纯hook实现的,demo包括c++调用demo,c#调用demo.hook 的dll是c++编写的,有需要的人 ...

  8. java 知识

    1. 单文件java 例子和简单项目例子 http://kleinfelter.com/java-hello-world-with-visual-studio-code-and-eclipse jav ...

  9. 调用ArrayList的add方法抛异常UnsupportedOperationException

    调用ArrayList的add方法抛异常UnsupportedOperationException 对于一些想要把数组转成List的需求,可能会使用到Arrays.asList()获取List对象,但 ...

  10. maven jetty指定端口号启动

    mvn jetty 启动指定端口号 方法 mvn jetty:run -Djetty.port=端口号 备注: 通过以上命令在 windows 中 powershell 下运行时,可能会碰到以下问题: ...