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

[PA 2021] Butelki

一道神秘题目,根本会不了一点点。

从暴力入手,如果打一个正常的 bfs 会发现跑的莫名其妙的快。

这是因为状态数是非常小的,我们进行一次操作之后,必然有一个是满的或空的。

我们假设这个空的或者满的是第一个。

那么对应的,剩下的总量是确定的,即 A+B+C 或 B+C。

所以我们的总量是很小的。

代码↓

点击查看代码
#include <bits/stdc++.h>
using namespace std;
const int MN=1e5+115;
const int inf=0x3f3f3f3f;
int A, B, C, a, b, c, ans[MN];
map <pair<int,int>,bool> vis;
struct State{int x, y, z, step;
};
void update(int x, int y, int z, int step){if(x>=0&&x<=A&&y>=0&&y<=B&&z>=0&&z<=C){ans[x]=min(ans[x],step);ans[y]=min(ans[y],step);ans[z]=min(ans[z],step);}
}
void Solve(){for(int i=0; i<MN; ++i) ans[i]=inf;queue <State> q;q.push({a,b,c,0});vis[{a,b}]=true;//vis[a][b]=true;while(!q.empty()){State now=q.front(); q.pop();int x=now.x, y=now.y, z=now.z, step=now.step;update(x,y,z,step);if(x>0&&y<B){int to=min(x,B-y);int nx=x-to, ny=y+to, nz=z;if(!vis[{nx,ny}]){vis[{nx,ny}]=true;q.push({nx,ny,nz,step+1});}}if(x>0&&z<C){int to=min(x,C-z);int nx=x-to, ny=y, nz=z+to;if(!vis[{nx,ny}]){vis[{nx,ny}]=true;q.push({nx,ny,nz,step+1});}}if(y>0&&x<A){int to=min(y,A-x);int nx=x+to, ny=y-to, nz=z;if(!vis[{nx,ny}]){vis[{nx,ny}]=true;q.push({nx,ny,nz,step+1});}}if(y>0&&z<C){int to=min(y,C-z);int nx=x, ny=y-to, nz=z+to;if(!vis[{nx,ny}]){vis[{nx,ny}]=true;q.push({nx,ny,nz,step+1});}}if(z>0&&x<A){int to=min(z, A-x);int nx=x+to, ny=y, nz=z-to;if(!vis[{nx,ny}]){vis[{nx,ny}]=true;q.push({nx,ny,nz,step+1});}}if(z>0&&y<B){int to=min(z,B-y);int nx=x, ny=y+to, nz=z-to;if(!vis[{nx,ny}]){vis[{nx,ny}]=true;q.push({nx,ny,nz,step+1});}}		}for(int i=0; i<=C; ++i){if(ans[i]==inf) cout<<-1<<" ";else cout<<ans[i]<<" ";}return;
}
int main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin>>A>>B>>C>>a>>b>>c;Solve();return 0;
}
http://icebutterfly214.com/news/24098/

相关文章:

  • 2025年质量好的精密铸造厂家最新实力排行
  • 2025年评价高的电动平板车拉货用户好评厂家排行
  • 2025年11月服务器回收公司排行:五强对比与口碑盘点
  • 2025年11月AI教学狗场景落地商推荐:赛飞特工程技术集团排行榜
  • 2025年枫叶租车融资权威深度解析:双引擎战略重塑中高端用车市场格局
  • 2025年11月美白面霜产品排名榜:持证美白温和修护全解析
  • 2025年11月货架厂家综合排行:专业顾问的客观评价与选择指南
  • 2025年11月市场证明机构排行:五家机构综合性能对比评估
  • 树莓派安装ubuntu22后apt安装软件报错:E: Sub-process /usr/bin/dpkg returned an error code (2)
  • springboot+easyui实现本学院学生去向登记表
  • powerGrid靶机复盘WP
  • 2025 年 11 月财税合规服务厂家推荐排行榜,电商/跨境电商/出口退税/公司注销/股权设计/平台报送/海外公司/审计报告全案解决方案
  • 2025 年 11 月疥螨阴虱药剂厂家推荐排行榜,扑灭司林/5%扑灭司林,苯甲酸苄酯/25%苯甲酸苄酯,15%胺氯菊百灭宁,科灭达公司推荐
  • Vibe Coding - 免费使用gpt-5、grok-code-fast-1进行氛围编程
  • 大家好
  • 前端框架深度解析:Vue 从入门到实战,掌握渐进式开发核心 - 实践
  • 浅谈dp中的最优化、计数问题
  • 2025北京一对一辅导/补习/培训/家教/网课推荐榜:金博教育领衔,3家优质机构凭个性化服务出圈,适配多元学习需求
  • CF1463E Plan of Lectures
  • 251107
  • P3978 概率论
  • 2025-11-07 PQ v.Next日志记录
  • 2025-11-07 早报新闻
  • R语言实现多组样本两两t检验的完整教程
  • SDOI 2024游记兼退役游记
  • NOIP 模拟赛 3 比赛总结
  • 2025年TWS耳机磁铁厂家权威推荐榜单:手机磁铁/钕铁硼磁铁/稀土磁铁源头厂家精选
  • 2025 年 11 月深圳店铺装修公司推荐排行榜,餐饮店铺装修,商场店铺装修,连锁店铺装修,零售店铺装修设计公司推荐
  • 护手仪ESD整改-ASIM阿赛姆
  • 2025年市面上成都小程序机构top10推荐:杰诚智享领跑行业