联合权值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),若它 ...
随机推荐
- CH0103 最短Hamilton路径 dp
正解:状压dp 解题报告: 完了吃枣退役:D 我是真的没想到这是个dp...脑子越来越不好了,大概是太久没碰OI了都要生疏了...哭了,感觉自己太傻逼了可能不适合学信息... 知道是个状压dp就eas ...
- 聊一聊Linux中的工作队列
2018-01-18 工作队列是Linux内核中把工作延迟执行的一种手段,其目的不同于软中断,软中断是提高CPU的响应,尽可能的缩短关中断的时间:而工作队列主要目的是节省资源,其比较适合很微小的任务, ...
- JS闭包中的循环绑定处理程序
前几天工作中写前端js代码时,遇到了遍历元素给它添加单击事件.就是这个问题让我整整调了一个下午.最后还是下班回家,上网查资料才知道怎么解决的. (PS:之前也在<jQuery基础教程>第四 ...
- python-面向对象-08_多态
多态 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 实现代码的重用,相同的代码不需要重复的编写 设计类的技巧 子类针对自己特有的需 ...
- (3.1)mysql基础深入——mysql二进制与源码目录结构介绍
(3.1)mysql基础深入——mysql二进制与源码目录结构介绍 关键字:二进制目录结构,源码目录结构(编译安装目录结构) 1.二进制安装程序目录结构 [1] BIN -- mysql的可执行文件( ...
- LINUX的前后台程序查看切换
1.在Linux终端运行命令的时候,在命令末尾加上 & 符号,就可以让程序在后台运行 root@Ubuntu$ ./tcpserv01 & 2.如果程序正在前台运行,可以使用 Ctrl ...
- CentOS工作内容(一)CentOS6.4的安装 hwclock和date
CentOS工作内容(一)CentOS6.4的安装 hwclock和date 光碟安装 分配20G磁盘空间 插入光碟 选择第一项安装 如果要急救的话请选择第三项 启动安装进程 跳过光碟检测 选择nex ...
- Python一键安装全部依赖包
requirements.txt用来记录项目所有的依赖包和版本号,只需要一个简单的pip命令就能完成. pip freeze >requirements.txt 然后就可以用 pip insta ...
- python中关于不执行if __name__ == '__main__':测试模块的解决
1.新建测试脚本文件: 2.编辑测试脚本 import unittest import requests import json import HTMLTestRunner ur1 = 'http:/ ...
- STL学习笔记--特殊容器
容器配接器 (1) stack 栈 后进先出(LIFO), 头文件#include<stack> template<class _Ty, class _Container = deq ...