【JZOJ4805】【NOIP2016提高A组模拟9.28】跟踪
2024-09-06 12:23:53
题目描述
输入
输出
样例输入
4 2 1 3
1 2
2 3
3 4
样例输出
2
数据范围
解法
预处理出两个陌生人走到各个点的距离。
从石神处开始dfs,判断走到每一个点是否会被抓;
如果会,则计算答案,并给超级答案取最大值;
如果不会,继续走下去。
计算答案只需简单的运算,O(1)即可。
代码
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#define ll long long
#define ln(x,y) int(log(x)/log(y))
#define sqr(x) ((x)*(x))
using namespace std;
const char* fin="track.in";
const char* fout="track.out";
const int inf=0x7fffffff;
const int maxn=200007,maxm=maxn*2;
int n,m1,m2,m3,i,j,k,tot,ans;
int fi[maxn],la[maxm],ne[maxm];
int dis[3][maxn];
void add_line(int a,int b){
tot++;
ne[tot]=fi[a];
la[tot]=b;
fi[a]=tot;
}
void getdis(int v,int from,int deep,int id){
int i,j,k;
dis[id][v]=deep;
for (k=fi[v];k;k=ne[k]) if (la[k]!=from) getdis(la[k],v,deep+1,id);
}
void dfs(int v,int from,int time){
int i,j,k=inf;
/*if (v!=m1) {
if (dis[1][v]/2<=dis[0][v]){
if (dis[1][v]%2) k=min(k,2);
else k=0;
}
if (dis[2][v]/2<=dis[0][v]){
if (dis[2][v]%2) k=min(k,2);
else k=0;
}
if (k!=inf){
ans=max(time+k,ans);
return ;
}
}*/
if (v==m1 || dis[1][v]/2+dis[1][v]%2>dis[0][v] && dis[2][v]/2+dis[2][v]%2>dis[0][v])
for (k=fi[v];k;k=ne[k])
if (la[k]!=from){
dfs(la[k],v,time+3);
}
ans=max(min(dis[1][v]/2*3+(dis[1][v]%2?2:0),dis[2][v]/2*3+(dis[2][v]%2?2:0)),ans);
}
int main(){
freopen(fin,"r",stdin);
freopen(fout,"w",stdout);
scanf("%d%d%d%d",&n,&m1,&m2,&m3);
for (i=1;i<n;i++){
scanf("%d%d",&j,&k);
add_line(j,k);
add_line(k,j);
}
getdis(m1,0,0,0);
getdis(m2,0,0,1);
getdis(m3,0,0,2);
dfs(m1,0,-2);
printf("%d",ans);
return 0;
}
启发
多出数据来调整细节。
最新文章
- 【Win 10应用开发】SplitView控件
- MySQL正则表达式
- BizTalk动手实验(一)安装BizTalk Server 2010开发环境
- 响应式注意要添加“视口”约束标记---viewport
- VC2013的一个bug
- PowerDesigner(六)-物理数据模型(PDM逆向工程)(转)
- 对javascript this的理解
- Java switch-case
- WPF 采用Border创建圆角
- python绝技 — 用Scapy解析TTL字段的值
- react学习笔记-01
- unity3d自带帮助文档的打开方法
- (简单) POJ 2406 Power Strings,扩展KMP。
- ASP.NET Core文件上传与下载(多种上传方式)
- 出错:Error creating bean with name &#39;studentServiceImpl&#39;: Unsatisfied dependency expressed through field &#39;studentMapper&#39;;
- DWM1000 三基站一标签定位HEX
- js基本知识
- Oracle学习——dmp文件(表)导入与导出
- 项目总结一:情感分类项目(emojify)
- LINQ之路14:LINQ Operators之排序和分组(Ordering and Grouping)