联合权值dp
联合权值
洛谷中可找到
题目传送门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的更多相关文章
- 【NOIP2014】联合权值 树上dp
题目描述 Description 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距离定 ...
- P1351 联合权值(树形dp)
P1351 联合权值 想刷道水题还交了3次.....丢人 (1.没想到有两个点都是儿子的状况 2.到处乱%(大雾)) 先dfs一遍处理出父亲$fa[x]$ 蓝后再一遍dfs,搞搞就出来了. #incl ...
- 【树形DP】【P1351】 【NOIP2014D1T2】联合权值
传送门 Description 无向连通图 \(G\) 有 \(n\) 个点, \(n-1\) 条边.点从 \(1\) 到 \(n\) 依次编号,编号为 \(i\) 的点的权值为 \(W_i\) ,每 ...
- NOIP2014提高组 联合权值(距离为2的树形dp)
联合权值 题目描述 无向连通图 GG 有 nn 个点,n-1n−1 条边.点从 11 到 nn 依次编号,编号为 ii 的点的权值为 W_iWi,每条边的长度均为 11.图上两点 (u, v)(u, ...
- Vijos1906 联合权值 NOIP2014Day1T2 树形动态规划
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - Vijos1906 题意概括 有一棵树,每一个节点都有一个权值w[i].下面说的x,y都是该树中的节点. 对于 ...
- [noip2014day1-T2]联合权值
无向连通图 G 有 n 个点,n-1 条边.点从 1 到 n 依次编号,编号为 i 的点的权值为 Wi,每条边的长度均为 1.图上两点(u, v)的距离定义为 u 点到 v 点的最短距离.对于图 G ...
- 「NOIP2014」「Codevs3728」 联合权值(乱搞
3728 联合权值 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 输入描述 Input Description 输出描述 Ou ...
- P1351 联合权值[鬼畜解法]
题目描述 无向连通图 G 有 n 个点,n−1 条边.点从 1 到 n 依次编号,编号为 i 的点的权值为 Wi,每条边的长度均为 1.图上两点 (u,v) 的距离定义为 u 点到 v 点的最短距离 ...
- Codevs 3728 联合权值
问题描述 无向连通图G有n个点,n-1条边.点从1到n依次编号,编号为i的点的权值为Wi ,每 条边的长度均为1.图上两点(u,v)的距离定义为u点到v点的最短距离.对于图G上的点 对(u,v),若它 ...
随机推荐
- windows底下怎么让cmder通过输入subl去打开sublime text
在window自身的cmd或者你安装的cmder中输入 doskey subl="D:\Program Files\sublime3\Sublime Text 3\sublime_text. ...
- 01_Python 基础课程安排
Python 基础课程安排 目标 明确基础班课程内容 课程清单 序号 内容 目标 01 Linux 基础 让大家对 Ubuntu 的使用从很 陌生 达到 灵活操作 02 Python 基础 涵盖 Py ...
- 前端 HTML 简介
HTML HTML是一个网页的主体部分,也是一个网页的基础.因为一个网页可以没有样式,可以没有交互,但是必须要有网页需要呈现的内容.所以HTML部分是整个前端的基础. HTML,全称是超文本标记语言( ...
- Hadoop自学笔记(三)MapReduce简单介绍
1. MapReduce Architecture MapReduce是一套可编程的框架,大部分MapReduce的工作都能够用Pig或者Hive完毕.可是还是要了解MapReduce本身是怎样工作的 ...
- 获取Let`s Encrypt证书的三种方式
1,acme.sh 方式 1)获取acme脚本 curl https://get.acme.sh | sh 2)开始获取证书 acme.sh强大之处在于,可以自动配置DNS,不用去域名后台操作解析记录 ...
- iOS 网易彩票-6设置模块三(常用小功能)
该篇文章中,用到很多iOS开发过程中常用的小功能,当前只是将这些功能集成到网易彩票的设置中.iOS-常用小功能介绍,请参考我的另一篇文章: iOS 常用小功能 总结:http://www.cnblog ...
- 使用sys用户创建其他用户下的dblink
因为dblink的创建和删除只能是它的所属用户来操作,所以我们无法直接使用sys用户创建其他用户下的dblink,当遇到有这样的需求时,可以先建立该用户下存储过程,再通过调用这个存储过程来间接实现. ...
- linux命令:帮助命令
帮助命令:man 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信息 范例:$man l ...
- 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 ...
- centos添加epel源
1. rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm 粗体部分需要根据自己的 ...