首页 > TAG信息列表 > P1084
P1084 [NOIP2012 提高组] 疫情控制 (二分答案、贪心)
因为若一个时间限制满足题意,则所有比它大的时间限制一定都满足题意,因此本题答案具有单调性,可以想到二分答案求解。 本题思路不是很难,但细节和代码实现比较复杂。 见牛人博客:https://www.luogu.com.cn/blog/TEoS/p1084-yi-qing-kong-zhi 1 #include<bits/stdc++.h> 2 typedef洛谷 P1084 [NOIP2012 提高组] 疫情控制(二分,倍增,贪心)
传送门 不得不说这题细节很恶心。 解题思路 二分最小时间x: 首先很显然的贪心是,每个节点的军队在时间x内一定要尽可能向上走,并且如果某个子树如果去支援别的子树,一定到的是子树的根节点(即根的儿子)。 所以我们可以用倍增判断在时间x内每个军队能到达的位置,把能到达根节点的并且还有P1084 二分 + 树上倍增 + 贪心
题意 传送门 P1084 疫情控制 题解 若 t t t 时间内可以完成控制疫情,那么 t ′洛谷 P1084 疫情控制
最小化最大值,显然就是个二分。 不难发现一个显而易见的性质:军队只能往上移动。 预处理一下倍增,每次把所有军队都尽量向上移,然后不难推理出一个贪心从而解决。 #include <cstdio> #include <cstring> #include <vector> #include <algorithm> inline int read(void){ int res = 0洛谷P1084 运输计划
题目 题目要求使一条边边权为0时,m条路径的长度最大值的最小值。 考虑二分此长度最大值 首先需要用lca求出树上两点间的路径长度。然后取所有比mid大的路径的交集,判断有哪些边在这些路径上都有出现,然后这些边里面取最大值当做虫洞,如果还是不行说明此mid不行。 判断边可以用把边化为P1084 【NOIP 2012】 疫情控制
\(Description\) 题面 给你一颗\(n\)个节点带权的树,告诉你有\(m\)个军队以及他们驻扎的节点,军队经过一条边的时间是这条边的权值,要求移动军队(所有军队可以同时移动,可以重合),使得每一条从根到叶子结点上都有军队驻扎,根节点不能驻扎军队,叶子结点可以驻扎军队。求完成部署的最短时间P1084 NOIP2012T6 疫情控制 二分+贪心+LCA
题意:在一棵树上有多个节点,求让这些军队将所有的从根节点到叶子节点的路径被一个或以上的军队堵住 因为所有军队可以同时移动,所以本题可简化成为:求出所有军队的最长移动时间,并使这个时间最小 解法:二分+贪心+LCA 1.二分;由于题目所给数据非常的大,而且需要对每一种做法都进行检验明P1084 疫情控制
#include<bits/stdc++.h>using namespace std;struct node{ int nxt,dis,to;}eg[51000*2];#define ll long longvoid adde(int from,int to,int dis){ eg[++ne].to=to; eg[ne].dis=dis; eg[ne].nxt=head[from]; head[from]=ne;}struct nd{int it,re;}num