bzoj 2657 旅游
Written with StackEdit.
Description
到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~
经过一番抉择,两人决定将\(T\)国作为他们的目的地。\(T\)国的国土可以用一个凸\(N\)边形来表示,\(N\)个顶点表示\(N\)个入境/出境口。T国包含\(N-2\)个城市,每个城市都是顶点均为\(N\)边形顶点的三角形(换而言之,城市组成了关于\(T\)国的一个三角剖分)。两人的旅游路线可以看做是连接\(N\)个顶点中不相邻两点的线段。

为了能够买到最好的纪念品,小白希望旅游路线上经过的城市尽量多。作为小蓝的好友,你能帮帮小蓝吗?
Input
每个输入文件中仅包含一个测试数据。
第一行包含两个由空格隔开的正整数\(N\),\(N\)的含义如题目所述。
接下来有\(N-2\)行,每行包含三个整数\(p,q,r\),表示该城市三角形的三个顶点的编号(\(T\)国的\(N\)个顶点按顺时间方向从\(1\)至\(N\)编号)。
Output
输出文件共包含\(1\)行,表示最多经过的城市数目。(一个城市被当做经过当且仅当其与线路有至少两个公共点)
Sample Input
6
1 2 4
2 3 4
1 4 5
1 5 6
Sample Output
4
HINT
\(4<=N<=200000\)
Solution
- 将每个三角形看成一个点.相邻的两个三角形之间连边.
- 注意到三角剖分中,一定需要剖\(N-3\)次,每剖一次,图中多出一条边,这条边只能连接一对三角形.(节点).
- 那么这个图共有\(N-2\)个点,\(N-3\)条边,且是连通的.
- 那么所求的答案即为树的直径.
#include<bits/stdc++.h>
using namespace std;
typedef long long LoveLive;
typedef pair<int,int> pii;
inline int read()
{
int out=0,fh=1;
char jp=getchar();
while ((jp>'9'||jp<'0')&&jp!='-')
jp=getchar();
if (jp=='-')
{
fh=-1;
jp=getchar();
}
while (jp>='0'&&jp<='9')
{
out=out*10+jp-'0';
jp=getchar();
}
return out*fh;
}
const int MAXN=2e5+10;
map<pii,int> s;
map<pii,int>::iterator it;
int n;
int cnt=0,head[MAXN];
int nx[MAXN<<1],to[MAXN<<1];
inline void add(int u,int v)
{
++cnt;
to[cnt]=v;
nx[cnt]=head[u];
head[u]=cnt;
}
inline void ins(int u,int v)
{
add(u,v);
add(v,u);
}
int dep[MAXN],q[4];
void opr(int a,int b,int i)
{
it=s.find(make_pair(q[a],q[b]));
if(it!=s.end())
ins(it->second,i),s.erase(it);
else
s[make_pair(q[a],q[b])]=i;
}
void dfs(int u,int fa)
{
for(int i=head[u];i;i=nx[i])
{
int v=to[i];
if(v==fa)
continue;
dep[v]=dep[u]+1;
dfs(v,u);
}
}
int getd()
{
int res=-1,rt;
dep[1]=1;
dfs(1,0);
for(int i=1;i<=n-2;++i)
if(dep[i]>res)
res=dep[i],rt=i;
dep[rt]=1;
dfs(rt,0);
for(int i=1;i<=n;++i)
res=max(res,dep[i]);
return res;
}
int main()
{
n=read();
for(int i=1;i<=n-2;++i)
{
q[1]=read();
q[2]=read();
q[3]=read();
sort(q+1,q+4);
opr(1,2,i);
opr(1,3,i);
opr(2,3,i);
}
int ans=getd();
printf("%d\n",ans);
return 0;
}
bzoj 2657 旅游的更多相关文章
- [bzoj] 2657 ZJOI2012 旅游 || bfs
原题 题意: 一个多边形,三角剖分,求一条对角线最多能经过多少三角形 题解: 因为不涉及坐标之类的,所以根几何肯定一点关系都没有. 我们会发现,对于有共边的两个三角形,可以被同一条线穿过,而这就相当于 ...
- BZOJ 2157: 旅游( 树链剖分 )
树链剖分.. 样例太大了根本没法调...顺便把数据生成器放上来 -------------------------------------------------------------------- ...
- bzoj 2157: 旅游 (LCT 边权)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2157 题面; 2157: 旅游 Time Limit: 10 Sec Memory Lim ...
- 【刷题】BZOJ 2157 旅游
Description Ray 乐忠于旅游,这次他来到了T 城.T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接.为了方便游客到达每个景点但又为了节约成本,T 城的任意两个景点之间 ...
- BZOJ 2157: 旅游
2157: 旅游 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1347 Solved: 619[Submit][Status][Discuss] ...
- BZOJ P2157 旅游
题目大意: 维护一棵树,每条边有边权,支持下列操作:1.修改某条边的边权2.将某条路经上的边权取反3.询问某条路经上的和4.询问某条路经上的最大值5.询问某条路经上的最小值 --by BZOJ; ht ...
- bzoj [POI2007]旅游景点atr 状态压缩+Dij
[POI2007]旅游景点atr Time Limit: 30 Sec Memory Limit: 357 MBSubmit: 2258 Solved: 595[Submit][Status][D ...
- BZOJ 2157: 旅游 (2017.7.21 6:30-2017.7.21 15:38 今日第一题。。)
Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1754 Solved: 765 Description Ray 乐忠于旅游,这次他来到了T 城.T ...
- BZOJ 3999 旅游
.......好长啊. #include<iostream> #include<cstdio> #include<cstring> #include<algo ...
随机推荐
- HTTP与服务器的四种交互方式
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP ...
- 如何修改Django中的日期和时间格式 DateTimeField
html页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,比如数据库字段内容为2017-06-03 13:00:00,但是页面显示的却是Apr. 03, 2 ...
- 批处理文件 bat 的入门命令
1. echo on和echo off echo on表示打开回显,echo off表示关闭回显,何为回显?打开回显就是执行命令时会把命令显示出来,关闭回显反之. 2.echo [message] 这 ...
- [BZOJ2342]双倍回文
对每个大中心暴力找小中心即可. 代码: #include<iostream> #include<cstdio> #include<cstring> #define ...
- BI项目中的ETL设计详解(数据抽取、清洗与转换 )(转载)
原文:http://www.cnblogs.com/reportmis/p/5939732.html ETL是BI项目最重要的一个环节,通常情况下ETL会花掉整个项目的1/3的时间,ETL设计的好坏直 ...
- T-SQL RIGHT JOIN
RIGHT JOIN外联接与LEFT JOIN相似.取得右表所有记录,并按过滤条件ON去取得左表的记录,取得这些记录,如遇上没有匹配的列使用NULL填充. 演示数据来源,两张表来自http://www ...
- Google推荐——Glide使用详解(图片加载框架)
零.前言 本文所使用的Glide版本为3.7.0 一.简介 Glide,一个被google所推荐的图片加载库,作者是bumptech.这个库被广泛运用在google的开源项目中,包括2014年的goo ...
- [转]类不平衡问题与SMOTE过采样算法
在前段时间做本科毕业设计的时候,遇到了各个类别的样本量分布不均的问题——某些类别的样本数量极多,而有些类别的样本数量极少,也就是所谓的类不平衡(class-imbalance)问题. 本篇简述了以下内 ...
- 绘制三角形(sass)
绘制三角形 /// draw triangle/// @param {type} $type [''] - triangleUp triangleDown triangleLeft triangleR ...
- TextView实现图文混合编排
TextView实现图文混合编排 一.简介 在这里实现图文混合编排使用的是:TextView中预定义的类似Html的标签 二.方法 * 1.设置好html标签的文本 String html=" ...