BZOJ2657: [Zjoi2012]旅游(journey) (树形DP)
题意:一个三角划分的凸多边形 画一条对角线 穿过最多的三角形
题解:把每一个三角形看作一个点 如果某条边是两个三角形的公共边 那么就把这两个三角形连边
然后问题就转化为求树上的最长链了 就当求个直径就完了
#include <stdio.h>
#include <algorithm>
#include <iostream>
using namespace std; struct node
{
int x, y, id;
}E[]; bool cmp(node A, node B)
{
if(A.x == B.x) return A.y < B.y;
else return A.x < B.x;
} int n, zd, rt;
int to[];
int dis[];
int nex[];
int head[]; void dfs(int x, int fa)
{
int c = head[x];
for(int i = c; i; i = nex[i])
{
int v = to[i];
if(v == fa) continue;
dis[v] = dis[x] + ;
if(dis[v] > zd) rt = v, zd = dis[v];
dfs(v, x);
}
} int main()
{
zd = rt = ;
scanf("%d", &n);
int cnt = ; for(int i = ; i <= n - ; i++)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
if(a < b) swap(a, b);
if(b < c) swap(b, c);
if(a < b) swap(a, b);
E[++cnt].x = a; E[cnt].y = b; E[cnt].id = i;
E[++cnt].x = b; E[cnt].y = c; E[cnt].id = i;
E[++cnt].x = a; E[cnt].y = c; E[cnt].id = i;
}
sort(E + , E + + cnt, cmp); int cn = ;
for(int i = ; i <= cnt; i++)
{
if(E[i].x == E[i - ].x && E[i].y == E[i - ].y)
{
int u = E[i].id; int v = E[i - ].id;
to[++cn] = u; nex[cn] = head[v]; head[v] = cn;
to[++cn] = v; nex[cn] = head[u]; head[u] = cn;
}
}
dfs(, -);
zd = ; int l = rt;
dis[rt] = ;
dfs(rt, -);
printf("%d\n", zd);
return ;
}
BZOJ2657: [Zjoi2012]旅游(journey) (树形DP)的更多相关文章
- BZOJ2657 [Zjoi2012]旅游(journey) 【树的直径】
题目 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~ 经过一番抉择,两人决定将T国作为他们的目的地.T国的国土可以用一个凸N边形来表示,N个顶点表示N个入境/出境口 ...
- bzoj2657: [Zjoi2012]旅游(journey)
求树的直径 真是太神辣 #include<cstdio> #include<cstring> #include<cstdlib> #include<algor ...
- [bzoj2657][Zjoi2012]旅游 journey_ 对偶图_树形dp
旅游 bzoj-2657 Zjoi-2012 题目大意:题目链接 注释:$1\le K\le 2\cdot 10^5$. 想法:这题... 感觉和上一个题的提示有些类似,就是题目生怕你不知道这是一道对 ...
- VIJOS1476旅游规划[树形DP 树的直径]
描述 W市的交通规划出现了重大问题,市政府下决心在全市的各大交通路口安排交通疏导员来疏导密集的车流.但由于人员不足,W市市长决定只在最需要安排人员的路口安放人员.具体说来,W市的交通网络十分简单,它包 ...
- 牛客小白月赛3---G 旅游(树形dp)
题目链接:https://www.nowcoder.com/acm/contest/87/G 分析: 1.对于点cur,dp[cur][0]表示在该点住宿:dp[cur][1]表示其某个子结点住宿,自 ...
- 【BZOJ】2657: [Zjoi2012]旅游(journey)(树的直径)
题目 传送门:QWQ 分析 在任意两个不相邻的点连一条线,求这条线能穿过几个三角形. 建图比较讲究(详见代码) 求树的直径. 代码 #include <bits/stdc++.h> usi ...
- hdu 3660 Alice and Bob's Trip(树形DP)
Alice and Bob's Trip Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- codeforces766E Mahmoud and a xor trip(按位统计+树形DP)
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 初涉树形dp
算是一个……复习以及进阶? 什么是树形dp 树形dp是一种奇妙的dp…… 它的一个重要拓展是和各种树形的数据结构结合,比如说在trie上.自动机上的dp. 而且有些时候还可以拓展到环加外向树.仙人掌上 ...
随机推荐
- Python爬虫开发【第1篇】【urllib2】
1.urlopen # urllib2_urlopen.py # 导入urllib2 库 import urllib2 # 向指定的url发送请求,并返回服务器响应的类文件对象,urlopen中有da ...
- centos7 安装8188eu驱动小记
最小化安装把lsusb和lspci装上 使用lsusb 和lspci的命令, centos上的安装命令: yum -y install usbutils yum -y install pciutils ...
- Linux/Android——input系统之 kernel层 与 frameworks层交互 (五)【转】
本文转载自:http://blog.csdn.net/jscese/article/details/42291149 之前的四篇博文记录的都是linux中的input体系相关的东西,最底层以我调试的u ...
- 配置文件git config介绍
Git有一个工具被称为git config,它允许你获得和设置配置变量:这些变量可以控制Git的外观和操作的各个方面. 一. 配置文件的存储位置 这些变量可以被存储在三个不同的位置: 1./etc/g ...
- Eclipse中执行sql脚本文件
转自:https://blog.csdn.net/weixin_37778823/article/details/79614281 在Eclipse中导入或新建sql脚本文件(.sql文件),选择指定 ...
- Java DOM方式解析XML(模板)
//创建一个DocumentBuilderFactory工厂实例 DocumentBuilderFactory DBF=DocumentBuilderFactory.newInstance(); // ...
- E20170611-hm
ascending adj. 上升的,向上的; ascend vt. 攀登; 继承; 占领; vi. 上升; 爬坡; 追溯; descending n. 递减; descend v ...
- React实战之60s倒计时按钮(发送短信验证按钮)
React实战之60s倒计时按钮——短信验证按钮 导入:(antd组件——Form表单) import { Button, Form, Input } from 'antd'; const FormI ...
- less新手入门(三) 作为函数使用的Mixin、@import 导入指令 、@import 导入选项
五.作为函数使用的Mixin 从mixin返回变量 在mixin中定义的所有变量都是可见的,并且可以在调用者的作用范围中使用(除非调用者用相同的名称定义它自己的变量). .mixin(){ @widt ...
- Java多线程(九) synchronized 锁对象的改变
public class MyService { private String lock = "123"; public void testMethod() { synchroni ...