P7177 [COCI2014-2015#4] MRAVI 题解

思路。

我们知道最初添加的液体越多,那么每个蚂蚁得到的液体也就越多,又因为标签里有深搜,所以可以用 DFS+二分解决(感觉说了一通废话),算是比较常规的一种解法了。

在此题中我们需要魔改一下建树,需在其中添加判断此边是否为超级管道和处理通过液体的百分比这两段代码。

DFS 和二分的代码是最重要的,但也是最简单的。

温馨提示:此题的码量有点逆天,根本不像正常的 DFS + 二分的题的码量,所以就不放完整代码了,也请各位注意。

其他就没什么了。

核心 DFS + 二分代码。

cpp 复制代码
void dfs(int x,int f) {
	for(int i=tou[x]; i; i=ed[i].nxt) {
		int y=ed[i].to;
		double res=0;
		if(y==f){
			continue;	
		}
		res=ll[x]*ed[i].w;
		if(ed[i].opt){
			res*=res;
		}
		ll[y]+=res;
		dfs(y,x);
	}
}
bool zhao(double mid) {
	for(int i=1; i<=n;i++){
		ll[i]=0;
	}
	ll[1]=mid;
	dfs(1,0);
	for(int i=1; i<=n;i++){
		if(ll[i]<k[i]){
			return 0;
		}
	}
	return 1;
}
相关推荐
Kx_Triumphs1 天前
HDU4348 To the moon(主席树区间修改模板)
算法·题解
qz5zwangzihan12 天前
题解:Atcoder Beginner Contest abc466 F - Many Mod Calculation
c++·题解·优先队列·atcoder·大根堆·abc466·abc466f
Tisfy2 天前
LeetCode 1291.顺次数:打表/枚举
算法·leetcode·题解·枚举·遍历
Tisfy3 天前
LeetCode 2685.统计完全连通分量的数量:DFS求每个连通块的边点数
算法·leetcode·深度优先··题解·连通图·全连通分量
王老师青少年编程5 天前
2025年【江苏“信息与未来”编程思维】真题及题解(T2:坐标变换)
c++·题解·真题·坐标变换·编程思维·江苏·信息与未来
Tisfy6 天前
LeetCode 1288.删除被覆盖区间:排序(非二重循环暴力)
算法·leetcode·题解·排序
王老师青少年编程9 天前
2026年6月GESP真题及题解(C++一级):交税
c++·题解·真题·gesp·一级·2026年6月·交税
王老师青少年编程10 天前
2026年6月GESP真题及题解(C++二级):完全平方数计数
c++·题解·真题·gesp·二级·2026年6月·完全平方数计数
王老师青少年编程11 天前
2026年6月GESP真题及题解(C++五级):排排坐
c++·题解·真题·gesp·五级·2026年6月·排排坐
王老师青少年编程11 天前
2026年6月GESP真题及题解(C++五级):晚宴
c++·题解·真题·gesp·五级·2026年6月·晚宴