UVA - 10603 Fill(隐式图搜索)
题目大意:经典的倒水问题。
给你三个瓶子,体积为a,b,c。
刚開始a。b是空的,c是满的,如今要求你到出体积为d的水。倒水的规则为,要么倒水方为空,要么接水方满
问倒到容量为d时,倒水的最小体积是多少。假设不能倒出体积为d的水,找出d’ < d,最接近d的d’和最小的体积
解题思路:刚才时以为直接bfs,用vis标记一下就结束了,结果WA了。为什么会WA。由于我这样求的是倒水次数最少的,而不是倒水体积最小的,WA是肯定的了
接着将vis数组改成int型的,纪录达到这个状态时倒水的体积。结果可想而之TLE(可能是我写搓了。。)
借鉴了一下别人的,恍然大悟,用一个数组代表倒出这个体积的水时倒的水的最小体积,这样就能够降低非常多种情况了,确实是一个大剪枝
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
#define N 210
#define INF 0x3f3f3f3f
struct Node{
int have[3];
int d;
}n1, n2;
int done[N], val[3];
int d;
bool vis[N][N];
void init() {
memset(vis, 0, sizeof(vis));
memset(done, 0x3f, sizeof(done));
scanf("%d%d%d%d", &val[0], &val[1], &val[2], &d);
done[0] = done[val[2]] = 0;
}
void bfs() {
queue<Node> Q;
vis[0][0] = true;
n1.have[0] = n1.have[1] = n1.d = 0;
n1.have[2] = val[2];
Q.push(n1);
while (!Q.empty()) {
n1 = Q.front();
Q.pop();
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++) {
if (i ^ j) {
n2 = n1;
int tmp = val[j] - n2.have[j] < n2.have[i] ? val[j] - n2.have[j] : n2.have[i];
n2.have[j] += tmp;
n2.have[i] -= tmp;
n2.d += tmp;
if (!vis[n2.have[0]][n2.have[1]] || done[n2.have[0]] > n2.d || done[n2.have[1]] > n2.d || done[n2.have[2]] > n2.d) {
vis[n2.have[0]][n2.have[1]] = true;
for (int k = 0; k < 3; k++) {
done[n2.have[k]] = min(done[n2.have[k]], n2.d);
}
Q.push(n2);
}
}
}
}
}
void solve() {
bfs();
for (int i = d; i >= 0; i--)
if (done[i] != INF) {
printf("%d %d\n", done[i], i);
break;
}
}
int main() {
int test;
scanf("%d", &test);
while (test--) {
init();
solve();
}
return 0;
}
UVA - 10603 Fill(隐式图搜索)的更多相关文章
- uva 310 L--system(隐式图搜索+字符串处理)
L-system A D0L (Deterministic Lindenmayer system without interaction) system consists of a finite ...
- UVa 658 - It's not a Bug, it's a Feature!(Dijkstra + 隐式图搜索)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- uva 10274 Fans and Gems(隐式图搜索+模拟)
Fans and Gems Input: Standard Input Output: Standard Output Tomy's fond of a game called 'Fans and G ...
- 紫书 例题 11-6 UVa 658 (状态压缩+隐式图搜索+最短路)
这道题用到了很多知识点, 是一道好题目. 第一用了状态压缩, 因为这里最多只有20位, 所以可以用二进制来储存状态 (要对数据范围敏感), 然后 涉及到了一些位运算. 第二这里是隐式 ...
- 【uva 658】It's not a Bug, it's a Feature!(图论--Dijkstra或spfa算法+二进制表示+类“隐式图搜索”)
题意:有N个潜在的bug和m个补丁,每个补丁用长为N的字符串表示.首先输入bug数目以及补丁数目.然后就是对M个补丁的描述,共有M行.每行首先是一个整数,表明打该补丁所需要的时间.然后是两个字符串,第 ...
- [HNOI2006]最短母串问题 --- AC自动机 + 隐式图搜索
[HNOI2006]最短母串问题 题目描述: 给定n个字符串(S1,S2.....,Sn),要求找到一个最短的字符串T,使得这n个字符串(S1,S2,......,Sn)都是T的子串. 输入格式: 第 ...
- 洛谷 P2622 关灯问题II【状压DP;隐式图搜索】
题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯--按下了第i个按钮,对于所有的灯都有一个效果.按下i按钮对于第j盏灯,是下面3中效果之一:如果a[i][j]为1,那么当这盏灯开了的时 ...
- UVa 10603 Fill [暴力枚举、路径搜索]
10603 Fill There are three jugs with a volume of a, b and c liters. (a, b, and c are positive intege ...
- UVa 10603 Fill (BFS && 经典模拟倒水 && 隐式图)
题意 : 有装满水的6升的杯子.空的3升杯子和1升杯子,3个杯子中都没有刻度.不使用道具情况下,是否可量出4升水呢? 你的任务是解决一般性的问题:设3个杯子的容量分别为a, b, c,最初只有第3个杯 ...
随机推荐
- cobbler 安装centos7.3时GPT问题(五)
磁盘分区表MBR和GPT介绍: MBR(Master Boot Record):最大只支持2 TB的盘,最多只支持4个主分区,信息只存储在一个区域. GPT(GUID partition table) ...
- 01 Java 代码是怎么运行的
Java代码运行的方式 1:在开发工具中运行 2:双击 jar 文件运行 3:在命令行中运行 4:在网页中运行 上述运行方式都离不开 JRE,也就是 Java 运行时环境.实际上 JRE 仅包含运行 ...
- 精通CSS高级Web标准解决方案(2-1 可视化格式模型之框模型)
浮动.定位.框模型这些控制在页面上安排和显示元素的方式,形成CSS布局. 盒子模型 页面上的每个元素都被看成一个矩形框. 盒子模型有两种,分别是 IE 盒子模型和标准 W3C 盒子模型.他们对盒子模型 ...
- IDA动态调试技术及Dump内存
IDA动态调试技术及Dump内存 来源 https://blog.csdn.net/u010019468/article/details/78491815 最近研究SO文件调试和dump内存时,为了完 ...
- Synergy 使用方法备忘
Synergy 是 Symless 公司推出的「鼠标键盘共享软件」(mouse and keyboard sharing software),其功能还包括「共享剪贴板」(sharing clipboa ...
- HDU——1027Ignatius and the Princess II(next_permutation函数)
Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ( ...
- ACM程序设计选修课——Problem E:(ds:图)公路村村通(Prim)
问题 E: (ds:图)公路村村通 时间限制: 1 Sec 内存限制: 128 MB 提交: 9 解决: 5 题目描述 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本, ...
- HDU——1418抱歉(平面欧拉公式)
抱歉 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- BZOJ2324 [ZJOI2011]营救皮卡丘 【费用流】
题目 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘,也为了正义,小智和他的朋友们义不容辞的踏上了营救皮卡丘的道路. 火箭队一共有N个据点,据点之间存在M条双向道 ...
- 刷题总结——date(ssoj)
题目: 题目背景 SOURCE:NOIP2015-SHY-9 题目描述 小Y和小Z好不容易有机会相见啦,可是邪恶的小H却不想让他们相见.现在有一些城市,城市之间有双向路径相连,有路径相连的城市之间可以 ...