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;
}
相关推荐
talentestors18 天前
Codeforces Round 992 (Div. 2) 解题报告
c++·c·题解·cpp
Tisfy1 个月前
LeetCode 3240.最少翻转次数使二进制矩阵回文 II:分类讨论
算法·leetcode·矩阵·题解·回文·分类讨论
Tisfy1 个月前
LeetCode 3244.新增道路查询后的最短距离 II:贪心(跃迁合并)-9行py(O(n))
算法·leetcode·题解·贪心·思维
DdddJMs__1351 个月前
C语言 | Leetcode C语言题解之第564题寻找最近的回文数
c语言·leetcode·题解
朔北之忘 Clancy1 个月前
2022 年 9 月青少年软编等考 C 语言二级真题解析
c语言·开发语言·c++·学习·算法·青少年编程·题解
Alexxtl1 个月前
20241120 校内模拟赛 T3 题解
题解
Mopes__1 个月前
Python | Leetcode Python题解之第564题寻找最近的回文数
python·leetcode·题解
Mopes__1 个月前
Python | Leetcode Python题解之第564题数组嵌套
python·leetcode·题解
Tisfy1 个月前
LeetCode 3239.最少翻转次数使二进制矩阵回文 I:遍历(行和列两种情况分别讨论)
python·leetcode·矩阵·题解·回文
DdddJMs__1351 个月前
C语言 | Leetcode C语言题解之第557题反转字符串中的单词III
c语言·leetcode·题解