当前位置: 首页 > news >正文

P1215 母亲的牛奶 Mother‘s Milk【洛谷算法习题】

P1215 母亲的牛奶 Mother’s Milk

网页链接

P1215 母亲的牛奶 Mother’s Milk

题目描述

农民约翰有三个容量分别是a , b , c a,b,ca,b,c升的桶。

最初,a , b a,ba,b桶都是空的,而c cc桶是装满牛奶的。有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了。

当然每一次灌注都是完全的。由于节约,牛奶不会有丢失。

写一个程序去帮助农民找出当a aa桶是空的时候,c cc桶中牛奶所剩量的所有可能性。

输入格式

单独的一行包括三个整数a , b , c a,b,ca,b,c

输出格式

只有一行,升序地列出当a aa桶是空的时候,c cc桶牛奶所剩量的所有可能性。

输入输出样例 #1

输入 #1

8 9 10

输出 #1

1 2 8 9 10

输入输出样例 #2

输入 #2

2 5 10

输出 #2

5 6 7 8 9 10

说明/提示

【数据范围】
对于100 % 100\%100%的数据,1 ≤ a , b , c ≤ 20 1\le a,b,c \le 201a,b,c20

题目翻译来自NOCOW。

USACO Training Section 1.4

解题思路

本题核心是深度优先搜索(DFS) + 状态去重,遍历所有合法的牛奶倾倒状态,求解目标答案。三个桶的牛奶总量恒定为初始值C CC,用三元组( a , b , c ) (a,b,c)(a,b,c)表示当前状态,通过三维数组标记已访问状态,避免重复搜索。枚举6种倾倒方式(A→B、A→C、B→A、B→C、C→A、C→B),每次倾倒遵循规则:将牛奶倒至目标桶满或源桶空。搜索过程中,若A AA桶为空,则记录此时C CC桶的牛奶量。最后将所有合法结果升序输出。由于数据范围极小(≤ 20 ≤2020),DFS 暴力搜索简洁高效,完全满足题目要求。

总结

核心逻辑:通过DFS枚举所有牛奶倾倒的合法状态,筛选出A桶为空时C桶的所有可能容量。
关键操作:三维状态标记去重、6种倾倒逻辑实现、结果收集与排序。
效率保障:极小的数据范围让暴力搜索成为最优解,代码简洁且无超时风险。

代码内容

#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vvt;typedefpair<ll,ll>pll;constll N=1e3+10;constll INF=1e18;constll M=1e6+10;constll mod=1e9+7;ll A,B,C;ll v[22][22][22];ll r[22];voiddfs(ll a,ll b,ll c){if(v[a][b][c]==1)return;v[a][b][c]=1;if(a==0&&r[c]==0)r[c]=1;if(c>=(A-a))dfs(A,b,c-(A-a));elsedfs(c+a,b,0);if(c>=(B-b))dfs(a,B,c-(B-b));elsedfs(a,c+b,0);if(b>=(A-a))dfs(A,b-(A-a),c);elsedfs(b+a,0,c);if(b>=(C-c))dfs(a,b-(C-c),C);elsedfs(a,0,b+c);if(a>=(C-c))dfs(a-(C-c),b,C);elsedfs(0,b,a+c);if(a>=(B-b))dfs(a-(B-b),B,c);elsedfs(0,a+b,c);}intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>A>>B>>C;dfs(0,0,C);for(ll i=0;i<=21;i++)if(r[i])cout<<i<<' ';cout<<'\n';return0;}
http://www.jsqmd.com/news/774838/

相关文章:

  • AutoCoder:基于LLM的智能编程副驾,实现上下文感知的代码生成与重构
  • 基于Streamlit的私有化AI对话平台部署与架构解析
  • Arm架构事务内存扩展(TME)原理与应用解析
  • 深入解析MPC-BE:Windows平台终极开源媒体播放器的5大核心技术架构
  • 在Nodejs后端服务中集成Taotoken实现多模型自动切换与降级策略
  • 手把手教你用HBuilderX打包苹果CMS影视APP(附源码+宝塔部署避坑指南)
  • Arm C1-Premium核心性能监控与Topdown优化实战
  • MIT App Inventor终极指南:零代码打造专业移动应用的完整方案
  • 在taotoken模型广场根据任务需求与预算进行模型选型实践
  • FastAPI SDK:一站式企业级API开发工具包的设计与实战
  • PCIe 全解析笔记:从协议本质到工程实现
  • 别再让Maven打包搞坏你的PDF模板!手把手教你配置pom.xml解决iTextPDF ‘trailer not found‘报错
  • PX4飞控日志全解析:从QGC下载、MAVLink流到FlightReview分析的完整数据流水线
  • 别再瞎画了!新手用嘉立创打样PCB,这5个设计细节最容易翻车
  • 【限时公开】AISMM-Agile Gap Analysis工具箱(含17个自检问题+成熟度雷达图生成器)——仅开放至ISO/IEC 33002:2023正式发布前
  • 告别记事本!用PhpStorm 2024.1配置本地PHP调试环境(Win10/Win11保姆级教程)
  • 长期使用Taotoken按token计费模式带来的成本可控感受
  • 认知神经科学研究报告【20260029】
  • LLM生成RTL与网表表示学习在芯片设计中的应用
  • Go语言嵌入式向量数据库chromem-go:轻量级RAG与语义搜索实践
  • ESP32智能安防控制面板:硬件架构与Home Assistant集成
  • 深入探索RISC-V处理器仿真的可视化奥秘:Ripes工具全面解析
  • Arm性能分析工具与CI工作流整合实践
  • 别再死记硬背了!用ASL代码实例拆解ACPI表(从RSDP到DSDT)
  • 通达信缠论插件终极指南:3步实现自动笔段中枢分析
  • 运行若依项目
  • GPTDiscord:部署全能AI助手机器人,赋能Discord社区协作与知识管理
  • OpenClaw-Capacities:开源多模态AI能力集成框架的设计与实践
  • BELLE开源大模型:中文指令微调与LoRA高效训练实战指南
  • Gemini3.1pro 办公写作:从模板到高效交付的智能技巧