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

2022年信奥赛C++提高组csp-s初赛真题及答案解析(完善程序第2题)

2022年信奥赛C++提高组csp-s初赛真题及答案解析(完善程序第2题)

第2题

(容器分水)有两个容器,容器 1 的容量为为 a 升,容器 2 的容量为 b 升;同时允许下列的三种操作,分别为:

  1. FILL(i):用水龙头将容器 i(i∈1,2)灌满水;
  2. DROP(i):将容器 i 的水倒进下水道;
  3. POUR(i,j):将容器 i 的水倒进容器 j(完成此操作后,要么容器 j 被灌满,要么容器 i 被清空)。

求只使用上述的两个容器和三种操作,获得恰好 c 升水的最少操作数和操作序列。上述 a、b、c 均为不超过 100 的正整数,且 c≤max{a,b}。

试补全程序。

#include<bits/stdc++.h>usingnamespacestd;constintN=110;intf[N][N];intans;inta,b,c;intinit;intdfs(intx,inty){if(f[x][y]!=init)returnf[x][y];if(x==c||y==c)returnf[x][y]=0;f[x][y]=init-1;f[x][y]=min(f[x][y],dfs(a,y)+1);f[x][y]=min(f[x][y],dfs(x,b)+1);f[x][y]=min(f[x][y],dfs(0,y)+1);f[x][y]=min(f[x][y],dfs(x,0)+1);intt=min(a-x,y);f[x][y]=min(f[x][y],);t=min(x,b-y);f[x][y]=min(f[x][y],);returnf[x][y];}voidgo(intx,inty){if()return;if(f[x][y]==dfs(a,y)+1){cout<<"FILL(1)"<<endl;go(a,y);}elseif(f[x][y]==dfs(x,b)+1){cout<<"FILL(2)"<<endl;go(x,b);}elseif(f[x][y]==dfs(0,y)+1){cout<<"DROP(1)"<<endl;go(0,y);}elseif(f[x][y]==dfs(x,0)+1){cout<<"DROP(2)"<<endl;go(x,0);}else{intt=min(a-x,y);if(f[x][y]==){cout<<"POUR(2,1)"<<endl;go(x+t,y-t);}else{t=min(x,b-y);if(f[x][y]==){cout<<"POUR(1,2)"<<endl;go(x-t,y+t);}elseassert(0);}}}intmain(){cin>>a>>b>>c;ans=1<<30;memset(f,127,sizeoff);init=**f;if((ans=dfs(0,0))==init-1)cout<<"impossible";else{cout<<ans<<endl;go(0,0);}}
  1. ①处应填()

    A. dfs(x + t, y - t) + 1

    B. dfs(x + t, y - t) - 1

    C. dfs(x - t, y + t) + 1

    D. dfs(x - t, y + t) - 1

  2. ②处应填()

    A. dfs(x + t, y - t) + 1

    B. dfs(x + t, y - t) - 1

    C. dfs(x - t, y + t) + 1

    D. dfs(x - t, y + t) - 1

  3. ③处应填()

    A. x == c || y == c

    B. x == c && y == c

    C. x >= c || y >= c

    D. x >= c && y >= c

  4. ④处应填()

    A. dfs(x + t, y - t) + 1

    B. dfs(x + t, y - t) - 1

    C. dfs(x - t, y + t) + 1

    D. dfs(x - t, y + t) - 1

  5. ⑤处应填()

    A. dfs(x + t, y - t) + 1

    B. dfs(x + t, y - t) - 1

    C. dfs(x - t, y + t) + 1

    D. dfs(x - t, y + t) - 1

分析:

本题使用记忆化搜索(DFS)计算最少操作数,并通过递归输出操作序列。

  • 状态定义f[x][y]表示两个容器当前水量分别为xy时,达到任一容器水量为c的最少操作数。
  • DFS 过程:对每种操作(FILL、DROP、POUR)进行状态转移,取最小值。
    • 对于POUR(2,1),倒水量t = min(a - x, y),转移到(x+t, y-t),操作数加 1。
    • 对于POUR(1,2),倒水量t = min(x, b - y),转移到(x-t, y+t),操作数加 1。
  • GO 过程:根据f[x][y]的值逆向推导操作序列,直到达到目标状态(x==c || y==c)。
答案及题解:
  1. ①对应POUR(2,1)的状态转移,应为dfs(x+t, y-t) + 1,选A
  2. ②对应POUR(1,2)的状态转移,应为dfs(x-t, y+t) + 1,选C
  3. ③为递归终止条件,即任一容器水量为c,选A
  4. ④判断是否为POUR(2,1)转移而来,应比较f[x][y] == dfs(x+t, y-t) + 1,选A
  5. ⑤判断是否为POUR(1,2)转移而来,应比较f[x][y] == dfs(x-t, y+t) + 1,选C

专栏推荐:信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新)
https://blog.csdn.net/weixin_66461496/category_13125089.html


各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

1、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

2、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新)
https://blog.csdn.net/weixin_66461496/category_13125089.html

3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

4、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
http://www.jsqmd.com/news/377184/

相关文章:

  • 2026年公募基金券商推荐:长期稳健投资趋势评价,涵盖养老与教育场景配置痛点 - 品牌推荐
  • 2021年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第1题)
  • 2026年公募基金券商推荐:五大权威机构深度评测,覆盖多元配置场景与选基难题 - 品牌推荐
  • 2026年美国投资移民机构推荐:政策收紧下的权威评测,解决项目选择与资金安全痛点 - 品牌推荐
  • PHP 的问题不在语言本身,而在我们怎么写它
  • 深入解析:MySQL执行计划与索引优化全面解析(三)
  • 基于Qwen3-TTS-12Hz-1.7B-VoiceDesign的智能语音助手开发
  • Pi0机器人控制中心AI加速:NPU专用处理器优化
  • 2026年私募产品券商推荐榜单:基于资产配置能力与买方视角评估的行业洞察 - 品牌推荐
  • 2026年度私募产品券商服务推荐:专业筛选与资产配置双维度综合评估 - 品牌推荐
  • 2026年公募基金券商推荐:机构配置场景深度评测,解决选品与风控核心痛点排名 - 品牌推荐
  • GrokAI1.1.20-release.19 | 马斯克AI,实测可无敏感生图,可生成视频
  • 棉花音乐 3.9.7 | 网盘音乐播放器 支持多种云端存储 打造无损音乐库
  • 2026年公募基金券商推荐:权威评测揭示服务排名,聚焦配置痛点与合规场景 - 品牌推荐
  • 使用VLOOKUP优化Nano-Banana产品数据库查询
  • Wan2.2-T2V-A5B视频生成中的YOLOv8目标检测应用
  • 46页精品PPT | 企业数字化转型总体规划与实践汇报方案
  • 如何选择私募产品合作券商?2026年券商服务能力评测与推荐,直击陪伴痛点 - 品牌推荐
  • StructBERT零样本分类:企业舆情监控最佳实践
  • AI算法应用工程师职位深度解析与面试指南
  • 一键复制功能解析:PasteMD如何提升文本处理效率
  • Pi0机器人控制中心惊艳演示:无模型模拟器模式下的交互逻辑完整性验证
  • 科学智能体(AI Agent)系统工程师:构建未来科研自动化的核心力量
  • 2026年度权威发布:最新私募产品券商实力与服务体系深度解析 - 品牌推荐
  • SiameseUIE信息抽取:从部署到实战全流程
  • 医疗前端开发岗位深度解析与面试指南
  • CogVideoX-2b效果实录:高质量动态视频生成全过程
  • MTools隐藏功能:自定义Prompt打造专属文本助手
  • 深入解析:Android 驱动开发工程师的核心能力与面试指南
  • 小白也能懂:雯雯的后宫-造相Z-Image瑜伽女孩生成教程