POJ1192最优连通子串----树形dp
中文题面,目的很明显,把相邻的两个点看成是两个点之间有一条边,就能当成树形dp来做了。
用一遍dfs可以找出最大的子树权值和。
#include<iostream>
#include<vector>
#include<queue>
#include<string.h>
#include<stdio.h>
#include<map>
using namespace std;
#define p pair<int,int>
map<p,int> mp,pd;
int a[][],ans=;
int dfs(int x,int y)
{
//cout<<x<<" "<<y<<endl;
int d;
if(mp[p(x,y)]==) d=;
else d=mp[p(x,y)];
//cout<<d<<" ";
pd[p(x,y)]=;
if(mp[p(x+,y)]==||pd[p(x+,y)]!=) ;
else d+=dfs(x+,y);
if(mp[p(x,y+)]==||pd[p(x,y+)]!=) ;
else d+=dfs(x,y+);
if(mp[p(x-,y)]==||pd[p(x-,y)]!=) ;
else d+=dfs(x-,y);
if(mp[p(x,y-)]==||pd[p(x,y-)]!=) ;
else d+=dfs(x,y-);
ans=max(ans,d);
//cout<<d<<endl;
if(d>) return d;
else return ;
}
int main()
{
int n,i,j,k,l,x,y,z;
cin>>n;
for(i=;i<n;i++)
{
cin>>x>>y>>z;
if(z==) z=;
mp[p(x,y)]=z; //用于标记该点是否存在,为了避免0的干扰,对权值为0的点特判
pd[p(x,y)]=;//标记这个点(x,y)是否遍历到过
}
dfs(x,y);
cout<<ans<<endl;
}
POJ1192最优连通子串----树形dp的更多相关文章
- poj1192 最优连通子集(树形dp)
题目链接:poj1192 最优连通子集 求一棵无向树的最大子树和..类似于求最大子段和的办法,树形dp. dp[i][0]:以i为根,不包括 i 结点的子树最大权 dp[i][1]:以i为根,包括 i ...
- ACM/ICPC 之 树形DP(POJ1192)
将某点看做根状态,邻接点看做子状态,由子状态向根状态转移. POJ1192-最优连通子集 题解:将每一个点分成两个状态进行保存,因此可以构造一个数组dp[i][2]. dp[i][0]:不包括该点权值 ...
- HDU4612(Warm up)2013多校2-图的边双连通问题(Tarjan算法+树形DP)
/** 题目大意: 给你一个无向连通图,问加上一条边后得到的图的最少的割边数; 算法思想: 图的边双连通Tarjan算法+树形DP; 即通过Tarjan算法对边双连通缩图,构成一棵树,然后用树形DP求 ...
- HDU 2242 考研路茫茫—空调教室 (边双连通+树形DP)
<题目链接> 题目大意: 给定一个连通图,每个点有点权,现在需要删除一条边,使得整张图分成两个连通块,问你删除这条边后,两联通块点权值和差值最小是多少. 解题分析: 删除一条边,使原连通图 ...
- hdu 4612 Warm up 双连通+树形dp思想
Warm up Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total S ...
- 4.9 省选模拟赛 圆圈游戏 树形dp set优化建图
由于圆不存在相交的关系 所以包容关系形成了树的形态 其实是一个森林 不过加一个0点 就变成了树. 考虑对于每个圆都求出最近的包容它的点 即他的父亲.然后树形dp即可.暴力建图n^2. const in ...
- 树形动态规划(树形DP)入门问题—初探 & 训练
树形DP入门 poj 2342 Anniversary party 先来个题入门一下~ 题意: 某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上 ...
- 树形dp|无根树转有根树|2015年蓝桥杯生命之树
2015年蓝桥杯第十题--生命之树(无根树dfs) ①暴力解法:枚举子集(选点) + dfs判断连通性(题目要求连通)满足上面两个条件下找出最大值权值和 ②dfs无根树转有根树,递归找最优 先学习无根 ...
- POJ 1849 - Two - [DFS][树形DP]
Time Limit: 1000MS Memory Limit: 30000K Description The city consists of intersections and streets t ...
随机推荐
- docker国内镜像源
https://www.daocloud.io/mirror curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http ...
- jedis & common pool
http://mvnrepository.com/artifact/redis.clients/jedis http://mvnrepository.com/artifact/org.apache.c ...
- VUE-009-页面打开时初始化配置项内容
网页开发过程中,尤其是在表单开发过程中,不可避免的会有各种各样的基础数据需要展示,供用户使用.例如,大家在办理信用卡时,经常需要填写各种表单数据,其中:性别(男.女).学历(高中及以下.大专.本科.研 ...
- c++ STL概述
2018-09-26 c++ STL(标准模板库)是一套通过c++模板类实现的标准类库,提供了通用的模板和函数,功能强大,大大的提高了c++的开发效率. c++ STL的核心主要包括三个组件:(1)容 ...
- ytkah常用网址导航 关于网站运营等
关于运营的网站 人人都是产品经理 产品100 爱运营 A5网站运营 姑婆那些事儿 馒头商学院 运营者 91运营网 互联网的一些事 jb51网站运营 三联网站运营 从零开始做运营 科技/互联网 cn ...
- 在visual studio code 中配置python以及解决中文乱码问题
安装好 visual stuido code (下面简称 “ VSC ”)后,要想使用它运行调试 python 代码还需要做一些工作以解决下列问题: 搭建 python 环境 print 打印中文出现 ...
- webpack(5) -开发环境
使用 source map (仅用于开发环境) 当 webpack 打包源代码时,可能会很难追踪到 error(错误) 和 warning(警告) 在源代码中的原始位置.例如,如果将三个源文件(a.j ...
- Python 多线程和线程池
一,前言 进程:是程序,资源集合,进程控制块组成,是最小的资源单位 特点:就对Python而言,可以实现真正的并行效果 缺点:进程切换很容易消耗cpu资源,进程之间的通信相对线程来说比较麻烦 线程:是 ...
- Git 撤销到某个版本的代码
Git checkout 版本号 文件名带路径的
- js大图轮播和倒计时
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...