题目链接:

https://www.luogu.org/problemnew/show/P1351

参考洛谷题解:

使用链式前向星储存图。如果使用深度优先搜索的话,是会超时的,如果遍历中间的点,虽然比直接遍历快一点,但是也会超时,画一个有三个顶点一个中心的菊花图,题目就是要求三个顶点两两相乘的和,找规律可得到:结果为三个顶点的和的平方减去三个顶点的平方和,推广到n个顶点也是一样的。由此得出代码:

#include <iostream>
#include <cstring>
#include <stdio.h>
using namespace std;
typedef long long ll;
const int inf=1e6+7;
struct node
{int from,to,next;
}themap[inf];
int head[inf],thevalue[inf],thenow[inf];
int cnt=0;
int themax=-1,theans=0;void addedge(int u,int v)   //远不如直接在用一个来的好。
{themap[cnt].from=u;themap[cnt].to=v;themap[cnt].next=head[u];head[u]=cnt++;themap[cnt].from=v;themap[cnt].to=u;themap[cnt].next=head[v];head[v]=cnt++;
}int main()
{int n,u,v;memset(head,-1,sizeof(head));scanf("%d",&n);for(int i=1;i<n;i++){scanf("%d %d",&u,&v);addedge(u,v);}for(int i=1;i<=n;i++)scanf("%d",&thevalue[i]);for(int i=1;i<=n;i++){int flag=0;ll one=-1,two=-1;       //最大值和次大值。ll temp1=0;ll temp2=0;for(int j=head[i];j!=-1;j=themap[j].next){//thenow[flag++]=themap[j].to;int now=themap[j].to;       //是其中的值啊.if(thevalue[now]>one){two=one;one=thevalue[now];}else if(thevalue[now]>two)two=thevalue[now];temp1+=thevalue[now];temp1=temp1%10007;temp2+=(thevalue[now]*thevalue[now])%10007;temp2=temp2%10007;      flag++;}if(flag==1){}else{if(one*two>themax){themax=one*two;                    }temp1=(temp1*temp1)%10007;theans+=(temp1-temp2+10007);        //防止theans成为负的。theans=theans%10007;    }}printf("%d %d\n",themax,theans%10007);return 0;
}

NOIP 2014 联合权值相关推荐

  1. NOIp 2014 联合权值 By cellur925

    题目传送门 这题自己(真正)思考了很久(欣慰). (轻而易举)地发现这是一棵树后,打算从Dfs序中下功夫,推敲了很久规律,没看出来(太弱了). 开始手动枚举距离为2的情况,模模糊糊有了一些概念,但没有 ...

  2. NOIP 2014TG 联合权值

    原题地址 https://www.luogu.org/problemnew/show/P1351 主要思路:推公式 由上图得到(元素的和的平方)等于(元素的平方和)加(两倍各元素两两相乘) 然后枚举中 ...

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

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

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

    codevs 3728 联合权值 题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( 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. P1351 联合权值[鬼畜解法]

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

  9. 洛谷 1351 联合权值

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

最新文章

  1. python爬虫之微打赏(scrapy版)
  2. 超级详细的解决方法 (CentOS7) :永久修改 mysql read-only 问题 could not retrieve transation read-only status server
  3. c2665 “initgraph”: 2 个重载中没有一个可以转换所有参数类型_Python 命令行之旅:深入 click 之参数篇...
  4. 【转】(原創) 如何使用ModelSim-Altera對Nios II仿真? (SOC) (Nios II) (SOPC Builder) (ModelSim) (DE2)...
  5. 【转】IAR与Keil两款开发工具区别
  6. 从零入门 FreeRTOS 操作系统之任务调度器
  7. JAVA入门[22]—thymeleaf
  8. 从一个实际的例子出发,谈谈SAP Commerce Cloud电商云的UI自定义开发
  9. vue+node全栈移动商城【6】-node接口配置文件
  10. 使用TensorFlow.js进行AI在网络摄像头中翻译手势和手语
  11. 开启和关闭HBase的thrift进程
  12. 思科Smart Software Manager高权限登录凭证遭暴露
  13. 蓝桥杯 ADV-225 算法提高 9-2 文本加密
  14. SIP - pjsip Linux Windows 编译安装
  15. html5留言板网页设计,网页设计制作-留言板
  16. 给pmbus添加mfr_id, mfr_version, mfr_model节点显示
  17. 基于PHP、MySql的宿舍管理系统
  18. 【知识图谱 赵军 学习笔记】第五章 实体消歧
  19. 设置App标题栏与手机状态栏背景颜色一致
  20. 关于Batch Normalization的理解和认识

热门文章

  1. JAVA入门[23]-SpringBoot配置Swagger2
  2. 代码管理 ,git 命令整理
  3. tomcat基本知识点与实例
  4. 流量银行与阿里联手放大招 1毛钱换1块钱
  5. python继承实现原理封装property
  6. 《Netty 实战》Netty In Action中文版 第2章——你的第一款Netty应用程序(一)
  7. ios两张图片的合并
  8. SharePoint自动化系列——Error features自动deactivate
  9. JavaWeb学习总结(四十九)——简单模拟Sping MVC
  10. java继承 子类重写父类方法