联合权值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),若它 ...
随机推荐
- JMeter(十)-正则表达式关联
jmeter中,接口自动化的关键在于参数关联.比如需要登录的接口,如何调用登录口令?一个增删改查的闭环,如何将接口参数上下传递?下面就以实际的例子来仔细说一说 1:登录接口 这里有一个实际的登录接口, ...
- LightOj 1248 - Dice (III)(几何分布+期望)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1248 题意:有一个 n 面的骰子,问至少看到所有的面一次的所需 掷骰子 的 次数的期望 ...
- ViewPager的OnPageChangeListener三个回调解析
一个native crash最后是重写ViewPager解决的,过程中发现这三个回调还有点绕,于是理了一下 ViewPager有两个操作,一个是用手指滑动翻页,一个是直接setCurrentItem( ...
- MySQL数据库运维课程
MySQL数据库运维课程 http://www.dataguru.cn/article-4834-1.html?union_site=comm100 课程大纲 第一课:机器选型.系统规划 第二课:安装 ...
- 论存储IOPS和Throughput吞吐量之间的关系
论存储IOPS和Throughput吞吐量之间的关系 http://www.csdn.net/article/2015-01-14/2823552 IOPS和Throughput吞吐量两个参数是衡量存 ...
- Git Gui 查看分支历史的时候中文显示乱码
如图所示 解决方案1 在Git Gui工具栏上选择-编辑-选项: 选择:Default File Contents Encoding, change为UTF-8 成功: 解决方案2 C:\Users ...
- mathtype使用方法
1:使mathtype中的公式左对齐 双击你的公式,进入mathtype编辑状态.用鼠标选中花括号右边的三行公式,不包括花括号本身,然后点format---matrix---change matrix ...
- 搭建本地离线yum仓库
目录 前言 把rpm包下载到本地 配置本地yum仓库信息 生成repodata信息 检查以及使用 对本地仓库进行更新 参考资料 修改记录 环境:VMware-Workstation-12-Pro,Wi ...
- Google面试题[一]
谷歌是不少IT人都想去的企业,那么在进入公司前,少不了面试笔试的测试.那么这里我们就总结了如下谷歌笔试题,并提供了一些参考答案.希望对您有用. 谷歌笔试题:判断一个自然数是否是某个数的平方.当然不能使 ...
- [LeetCode] 628. Maximum Product of Three Numbers_Easy
Given an integer array, find three numbers whose product is maximum and output the maximum product. ...