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;
}
相关推荐
cpp_25011 天前
P11375 [GESP202412 六级] 树上游走
数据结构·c++·算法·题解·洛谷·树形结构·gesp六级
cpp_25012 天前
P10722 [GESP202406 六级] 二叉树
数据结构·c++·算法·题解·洛谷·树形结构·gesp六级
cpp_25013 天前
P10109 [GESP202312 六级] 工作沟通
数据结构·c++·算法·题解·洛谷·gesp六级
cpp_25013 天前
P10377 [GESP202403 六级] 好斗的牛
数据结构·c++·算法·题解·洛谷·gesp六级
朔北之忘 Clancy5 天前
2026 年 3 月青少年软编等考 C 语言二级真题解析
c语言·开发语言·c++·学习·青少年编程·题解·考级
朔北之忘 Clancy6 天前
2026 年 3 月青少年软编等考 C/C++ 一级真题解析
c语言·开发语言·c++·青少年编程·题解·考级
Tisfy9 天前
LeetCode 3121.统计特殊字母的数量 II:状态机
算法·leetcode·题解·状态机
Tisfy15 天前
LeetCode 3043.最长公共前缀的长度:哈希表(不转string)
算法·leetcode·散列表·题解·哈希表
alexwang21115 天前
AT_abc458_d [ABC458D] Chalkboard Median题解
c++·算法·题解·atcoder
Tisfy16 天前
LeetCode 2540.最小公共值:双指针(O(m+n))
算法·leetcode·题解·双指针