UVa 10603 填满倒水问题
发布时间
阅读量:
阅读量
设有三个容器,其容量分别标记为a、b、c。初始状态下,仅第三个容器装有c升液体,其余两个容器处于空置状态。目标是通过最少的液体转移量,使其中一个容器内的液体量恰好达到d升;若无法实现,则尽可能使某容器中的液体量接近d升。
由于系统中液体总量保持恒定,任意两个容器中的液体量均可推导出第三个容器的数值。
考虑到每个容器都有可能接近d升的数值,因此可采用数组结构进行状态判断。
题目强调所需转移的总水量最小,因此应设置变量用于记录该数值。
采用优先队列结合广度优先搜索的方法可有效解决此问题。
#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int maxn = 200 + 5;
int cup[3];
int vis[maxn][maxn];
int ans[maxn];
struct Node {
int v[3];
int dist;
friend bool operator < (const Node& n1, const Node& n2) {
return n1.dist > n2.dist;
}
};
v
全部评论 (0)
还没有任何评论哟~
