BZOJ

不是很懂他们为什么都要DFS三次。于是稳拿Rank1 qwq。

(三道题两个Rank1一个Rank3效率是不是有点高qwq?)


记以\(1\)为根DFS时每个点的深度是\(dep_i\)。对于一条限制\((a,b,D)\),满足条件的点\(x\)满足:\(dep_a+dep_b-2dep_x\leq D\Rightarrow dep_x\geq\frac{dep_u+dep_v-D}{2}\)。

那么\(dep_x\)最小是\(\max\{0,\ \lceil\frac{dep_u+dep_v-D}{2}\rceil\}\)(先不考虑负数的情况)。

记\(p\)为所有\(m\)条限制中,\(\max\{0,\ \lceil\frac{dep_u+dep_v-D}{2}\rceil\}\)最大的那个点\(x\)。

有一个结论是:若\(p\)不能满足所有限制,则一定无解。否则\(p\)为一个合法的解。

\(p\)就是要求最严格的限制所对应的那个点。对于和\(p\)不在同一棵子树里的限制,显然该限制要满足\(p\);在同一棵子树内的,因为\(p\)是最严格的,所以只要满足\(p\)就可以啦。


//13032kb	76ms
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#define gc() getchar()
#define MAXIN 500000
//#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
typedef long long LL;
const int N=3e5+5; int Enum,H[N],nxt[N<<1],to[N<<1],fa[N],dep[N],A[N],B[N],D[N];
char IN[MAXIN],*SS=IN,*TT=IN; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-48,c=gc());
return now;
}
inline void AE(int u,int v)
{
to[++Enum]=v, nxt[Enum]=H[u], H[u]=Enum;
to[++Enum]=u, nxt[Enum]=H[v], H[v]=Enum;
}
void DFS(int x)
{
for(int i=H[x],v; i; i=nxt[i])
if((v=to[i])!=fa[x]) fa[v]=x, dep[v]=dep[x]+1, DFS(v);
} int main()
{
for(int T=read(); T--; )
{
const int n=read(),m=read();
Enum=0, memset(H,0,n+1<<2);
for(int i=1; i<n; ++i) AE(read(),read());
dep[1]=0, fa[1]=0, DFS(1);
int mx=0,p=0;
for(int i=1; i<=m; ++i)
{
int t=dep[A[i]=read()]+dep[B[i]=read()]-(D[i]=read());
if(t>mx) mx=t, p=i;
}
if(!mx) {puts("TAK 1"); continue;}
int x=A[p];
for(int t=dep[x]-(mx+1)/2; t>0; --t,x=fa[x]);
dep[x]=0, fa[x]=0, DFS(x);
bool fg=1;
for(int i=1; i<=m; ++i)
if(dep[A[i]]+dep[B[i]]>D[i]) {fg=0; break;}
fg?printf("TAK %d\n",x):puts("NIE");
}
return 0;
}

BZOJ.4151.[AMPPZ2014]The Cave(结论)的更多相关文章

  1. bzoj 4152[AMPPZ2014]The Captain

    bzoj 4152[AMPPZ2014]The Captain 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. ...

  2. 【BZOJ 4151 The Cave】

    Time Limit: 5 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 293  Solved: 144[Submit][Status][Di ...

  3. 【BZOJ】2049: [Sdoi2008]Cave 洞穴勘测(lct/并查集)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2049 bzoj挂了..在wikioi提交,,1A-写lct的速度越来越快了-都不用debug-- 新 ...

  4. BZOJ 4144: [AMPPZ2014]Petrol

    4144: [AMPPZ2014]Petrol Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 457  Solved: 170[Submit][Sta ...

  5. 循环队列+堆优化dijkstra最短路 BZOJ 4152: [AMPPZ2014]The Captain

    循环队列基础知识 1.循环队列需要几个参数来确定 循环队列需要2个参数,front和rear 2.循环队列各个参数的含义 (1)队列初始化时,front和rear值都为零: (2)当队列不为空时,fr ...

  6. BZOJ 4152: [AMPPZ2014]The Captain( 最短路 )

    先按x排序, 然后只有相邻节点的边才有用, 我们连起来, 再按y排序做相同操作...然后就dijkstra ---------------------------------------------- ...

  7. BZOJ 4143: [AMPPZ2014]The Lawyer( sort )

    水题... 排序搞出每天的会议有哪些, 然后再按照会议的开始时间和结束时间排序, 最晚开始的和最早结束的会议不是同一场而且最晚开始的时间>最早结束的会议就有可能方案 -------------- ...

  8. BZOJ 4145: [AMPPZ2014]The Prices( 状压dp + 01背包 )

    我自己只能想出O( n*3^m )的做法....肯定会T O( nm*2^m )做法: dp( x, s ) 表示考虑了前 x 个商店, 已买的东西的集合为s. 考虑转移 : 先假设我们到第x个商店去 ...

  9. BZOJ.4144.[AMPPZ2014]Petrol(Kruskal重构树)

    BZOJ 看别人代码的时候发现哪一步都很眼熟,突然想起来,就在四个月前我好像看过还给别人讲过?mmp=v= 果然不写写就是容易忘.写了好歹忘了的时候还能复习呢(虽然和看别人的好像也没多少差别?). 首 ...

随机推荐

  1. enumerate列表继续前文的计数

    \documentclass[a4paper]{article} \usepackage{enumitem} % load the package \begin{document} \section{ ...

  2. ASP.NET MVC上传文件

    最近参考网络资料,学习了ASP.NET MVC如何上传文件.最基本的,没有用jQuery等技术. 1.定义Model public class TestModel    {        [Displ ...

  3. vue组件中data为什么必须是个函数

    <body> <div id="app"> <counter></counter> </div> <templat ...

  4. 区别 chown和chmod的用法

    本人总是习惯使用chmod,而把chown混淆. chown就是修改 第一列内容的 ,chmod是修改 第3,4列内容的. chown用法用来更改某个目录或文件的用户名和用户组的chown 用户名:组 ...

  5. 【easy】437. Path Sum III 二叉树任意起始区间和

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  6. go语言实现生产者-消费者

    前言: 之前在学习操作系统的时候,就知道生产者-消费者,但是概念是模模糊糊的,好像是一直没搞明白. 其实很简单嘛,生产者生产,消费者进行消费,就是如此简单.了解了一下go语言的goroute,感觉实现 ...

  7. 通过 iis或者本地IP 调试代码

    首先说下这个操作的意义,做微信开发每次需要将代码部署后才能调试.现在设置了Nginx服务器,生产环境可以指向正式服务器地址,调试时可以将Nginx指向自己的PC,但是vs调试启动的默认地址是[loca ...

  8. form 组件

    https://www.cnblogs.com/wupeiqi/articles/6144178.html class F2Form(forms.Form): title1=fields.CharFi ...

  9. tensorflow调试tfdbg

    tensorflow调试工具:tfdbg 使用教程:https://www.cnblogs.com/hellcat/articles/7812119.html 遇到的错误信息及解决方案 ModuleN ...

  10. Docker----在Docker中部署Asp.net core2.1以及修改发布

    本篇文章主要是如何在Docker容器中运行ASP.NET Core应用程序,以及修改系统之后,发布更新.本文章采用自定义的Docker文件 系统要求: 1.服务器或本地已经安装docker 一.创建一 ...