联合权值

                洛谷中可找到


题目传送门https://www.luogu.org/problemnew/show/P1351

这题我就得了70分(TLE)  GG了

就是遍历它孩子的孩子(爷爷和孙子),然后相乘;

ps:这样会有很多重复,TLE

 #include<cstdio>
#include<iostream>
#define maxn 200000+10
using namespace std;
int max(int x,int y)
{
return x>y?x:y;
}
int n;
struct ii{
int u,v,nxt;
}a[maxn*];
int w[maxn];
int head[maxn];
int o;
inline void add(int x,int y)
{
a[++o].u=x;
a[o].v=y;
a[o].nxt=head[x];
head[x]=o;
}
int main()
{
// freopen("link.in","r",stdin);
// freopen("link".out,"w",stdout);
scanf("%d",&n);
for(int i=,x,y;i<n;++i)
{
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
}
for(int i=;i<=n;++i)
scanf("%d",&w[i]);
int jl=;
int zui=,he=,wkk=;
for(int i=;i<=n;++i)
{
for(int j=head[i];j;j=a[j].nxt)
{
for(int zz=head[a[j].v];zz;zz=a[zz].nxt)
{
if(a[zz].v!=i)
{
wkk=w[a[zz].v]*w[i];
zui=max(zui,wkk);
he+=wkk;
he%=;
}
}
}
}
printf("%d %d",zui,he);
return ;
}


正解

#include<iostream>
#include<cstdio>
#define maxn 300000+10
using namespace std;
int n;
int max(int x,int y)
{
return x>y?x:y;
}//手写max,fast struct ii{
int v,nxt;
}a[];//链式强向星存图1
int head[];
int w[];
int he,ma;//ans int o;//存图
void add(int x,int y)
{
a[++o].v=y;
a[o].nxt=head[x];
head[x]=o;
} int main()
{
cin>>n;
int x,y;
for(int i=;i<=n-;++i)
{
scanf("%d%d",&x,&y);//输入
add(x,y);add(y,x);//正反存一遍
}
for(int i=;i<=n;++i)
{
scanf("%d",&w[i]);//输入价值
}
int sum,zui;//sum是孩子加起来的和,zui是孩子中最大的
for(int i=;i<=n;++i)
{
sum=(zui=w[a[head[i]].v])%;//初始值
for(int j=a[head[i]].nxt;j;j=a[j].nxt)//从第二个孩子开始遍历
{
//这一部分是求和
he=(he+sum*w[a[j].v])%;//乘法结合律
sum=(sum+w[a[j].v])%;//更新孩子和
//这一部分是求最大值
ma=max(ma,zui*w[a[j].v]);//更新最大值
zui=max(zui,w[a[j].v]);//更新孩子中的最大值
//因为这是最后更新的,所以不用担心出现最大值和自己相乘
}
} printf("%d %d",ma,he*%);//别忘了he*2
return ;
}

联合权值dp的更多相关文章

  1. 【NOIP2014】联合权值 树上dp

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

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

    P1351 联合权值 想刷道水题还交了3次.....丢人 (1.没想到有两个点都是儿子的状况 2.到处乱%(大雾)) 先dfs一遍处理出父亲$fa[x]$ 蓝后再一遍dfs,搞搞就出来了. #incl ...

  3. 【树形DP】【P1351】 【NOIP2014D1T2】联合权值

    传送门 Description 无向连通图 \(G\) 有 \(n\) 个点, \(n-1\) 条边.点从 \(1\) 到 \(n\) 依次编号,编号为 \(i\) 的点的权值为 \(W_i\) ,每 ...

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

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

  5. Vijos1906 联合权值 NOIP2014Day1T2 树形动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - Vijos1906 题意概括 有一棵树,每一个节点都有一个权值w[i].下面说的x,y都是该树中的节点. 对于 ...

  6. [noip2014day1-T2]联合权值

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

  7. 「NOIP2014」「Codevs3728」 联合权值(乱搞

    3728 联合权值 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold   题目描述 Description 输入描述 Input Description 输出描述 Ou ...

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

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

  9. Codevs 3728 联合权值

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

随机推荐

  1. windows底下怎么让cmder通过输入subl去打开sublime text

    在window自身的cmd或者你安装的cmder中输入 doskey subl="D:\Program Files\sublime3\Sublime Text 3\sublime_text. ...

  2. 01_Python 基础课程安排

    Python 基础课程安排 目标 明确基础班课程内容 课程清单 序号 内容 目标 01 Linux 基础 让大家对 Ubuntu 的使用从很 陌生 达到 灵活操作 02 Python 基础 涵盖 Py ...

  3. 前端 HTML 简介

    HTML HTML是一个网页的主体部分,也是一个网页的基础.因为一个网页可以没有样式,可以没有交互,但是必须要有网页需要呈现的内容.所以HTML部分是整个前端的基础. HTML,全称是超文本标记语言( ...

  4. Hadoop自学笔记(三)MapReduce简单介绍

    1. MapReduce Architecture MapReduce是一套可编程的框架,大部分MapReduce的工作都能够用Pig或者Hive完毕.可是还是要了解MapReduce本身是怎样工作的 ...

  5. 获取Let`s Encrypt证书的三种方式

    1,acme.sh 方式 1)获取acme脚本 curl https://get.acme.sh | sh 2)开始获取证书 acme.sh强大之处在于,可以自动配置DNS,不用去域名后台操作解析记录 ...

  6. iOS 网易彩票-6设置模块三(常用小功能)

    该篇文章中,用到很多iOS开发过程中常用的小功能,当前只是将这些功能集成到网易彩票的设置中.iOS-常用小功能介绍,请参考我的另一篇文章: iOS 常用小功能 总结:http://www.cnblog ...

  7. 使用sys用户创建其他用户下的dblink

    因为dblink的创建和删除只能是它的所属用户来操作,所以我们无法直接使用sys用户创建其他用户下的dblink,当遇到有这样的需求时,可以先建立该用户下存储过程,再通过调用这个存储过程来间接实现. ...

  8. linux命令:帮助命令

    帮助命令:man 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信息 范例:$man l ...

  9. Summary: Lowest Common Ancestor in a Binary Tree & Shortest Path In a Binary Tree

    转自:Pavel's Blog Now let's say we want to find the LCA for nodes 4 and 9, we will need to traverse th ...

  10. centos添加epel源

    1. rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm    粗体部分需要根据自己的 ...