当前位置:网站首页>3511. 倒水问题
3511. 倒水问题
2022-08-10 00:30:00 【NEFU AB-IN】
Powered by:NEFU AB-IN
文章目录
3511. 倒水问题
题意
有三个杯子,容量分别为 A,B,C。
初始时,C 杯装满了水,而 A,B 杯都是空的。
现在在保证不会有漏水的情况下进行若干次如下操作:
将一个杯子 x 中的水倒到另一个杯子 y 中,当 x 空了或者 y 满了时就停止(满足其中一个条件才停下)。
请问,在操作全部结束后,C 中的水量有多少种可能性。思路
思路:设置好初始状态,便开始DFS,每个状态都搜一下6个倒水动作,用哈希表储存状态,防止遍历多次
- 状态存储:因为A,B,C最多4000,所以可以用一个1e12的数来存储状态,也就是每4位存一个数,比如
2,2,4
,就是000200020004
- 状态存储:因为A,B,C最多4000,所以可以用一个1e12的数来存储状态,也就是每4位存一个数,比如
代码
/* * @Author: NEFU AB-IN * @Date: 2022-08-09 20:41:11 * @FilePath: \Acwing\3511\3511.cpp * @LastEditTime: 2022-08-09 21:44:52 */ #include <bits/stdc++.h> using namespace std; #define int long long #define SZ(X) ((int)(X).size()) #define IOS \ ios::sync_with_stdio(false); \ cin.tie(0); \ cout.tie(0) #define DEBUG(X) cout << #X << ": " << X << '\n' typedef pair<int, int> PII; const int INF = INT_MAX; const int B = 10000; signed main() { IOS; int a, b, c; while (cin >> a >> b >> c) { unordered_set<int> st; // 记录A,B,C状态 unordered_set<int> s; // 记录C的状态 vector<int> x = { 0, 0, c}; // 初始状态 vector<int> bottle = { a, b, c}; // 瓶子容量 function<int(vector<int>)> get = [&](vector<int> x) { return x[0] * B * B + x[1] * B + x[2]; }; // 将瓶子的状态转换为long long 型 function<void(vector<int>)> dfs = [&](vector<int> x) { st.insert(get(x)); s.insert(x[2]); for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { if (i != j) { vector<int> tmp(x); // 倒水,从i往j倒 int water = min(tmp[i], bottle[j] - tmp[j]); tmp[i] -= water; tmp[j] += water; if (!st.count(get(tmp))) dfs(tmp); } } } }; dfs(x); cout << SZ(s) << '\n'; } return 0; }
边栏推荐
猜你喜欢
技术分享 | 接口自动化测试如何处理 Header cookie
Characteristics of the (CAS:1527486-16-3TAMRA-azide-PEG3-Biotin) reaction in biotin azide!
How to add control panel to right click menu in win7
基于Web的疫情隔离区订餐系统
ITK编译remote库
渗透测试与攻防对抗——漏洞扫描&逻辑漏洞(Part1)
Leetcode81. 搜索旋转排序数组 II
02| operator
flask——请求、响应、请求扩展、session、闪现、蓝图、g对象、flask-session
CAS:851113-28-5 (生物素-ahx-ahx-酪胺)
随机推荐
DHCP——动态主机配置协议
快速响应性智能型/智能响应性聚乙二醇纳米/还原响应型水凝胶的研究与制备
XSS高级 svg 复现一个循环问题以及两个循环问题
7. type( )函数——查询数据类型
DALL·E-2是如何工作的以及部署自己的DALL·E模型
-Knight Parade-
Aptos 深度解读:机遇、挑战与风险
@PostConsturct注解作用及特点
你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06
《痞子衡嵌入式半月刊》 第 60 期
03|流程控制
flask——请求、响应、请求扩展、session、闪现、蓝图、g对象、flask-session
Win7怎么把控制面板添加到右键菜单
破产企业的职工退休怎么办?
【无标题】
生物素叠氮化物中的(CAS:1527486-16-3TAMRA-azide-PEG3-Biotin)反应的特点!
RedHat红帽RHEL7安装与使用,VMware Workstation16 Pro虚拟机的安装与使用
Leetcode82. 删除排序链表中的重复元素 II
-采花生-
Leetcode79. 单词搜索