首页 > 其他分享 >HDOJ 1495 非常可乐 BFS

HDOJ 1495 非常可乐 BFS

时间:2024-11-23 21:55:03浏览次数:6  
标签:node int BFS vis 1495 102 HDOJ 可乐

调了好久把自己整笑了,肝完这题立马喝了一瓶可乐泄愤,小孩子才分可乐,我全都要

#include<bits/stdc++.h>
using namespace std;

struct node
{
	int m,l,r,cot;
};
int vis[102][102][102];
int main()
{
	int a,b,c;
	while(cin>>a>>b>>c)
	{
		if(a==0)
			break;
		if(a%2)
		{
			cout<<"NO"<<endl;
			continue;
		}
		queue<node>q;
		node x,y;int flag=0;
		x.m=a;x.l=0;x.r=0;x.cot=0;
		q.push(x);
		memset(vis,0,sizeof(vis));
		while(!q.empty())
		{
			x=q.front();//cout<<x.m<<' '<<x.l<<' '<<x.r<<endl;
			q.pop();
			if(x.l==x.r&&x.m==0||x.l==x.m&&x.r==0||x.m==x.r&&x.l==0)
			{
				cout<<x.cot<<endl;
				flag=1;
				break;
			}	
			if(vis[x.l][x.m][x.r])
				continue;
			vis[x.l][x.m][x.r]=1;
			if(x.l<b)
			{
				if(x.m)
				{
					if(x.m+x.l<=b)
					{
						y.l=x.l+x.m;y.m=0;y.r=x.r;y.cot=x.cot+1;q.push(y);
					}
					else 
					{
						y.m=x.m-b+x.l;y.l=b;y.r=x.r;y.cot=x.cot+1;q.push(y);
					}
				}
				if(x.r)
				{
					if(x.r+x.l<=b)
					{
						y.l=x.l+x.r;y.r=0;y.m=x.m;y.cot=x.cot+1;q.push(y);
					}
					else 
					{
						y.r=x.r-b+x.l;y.l=b;y.m=x.m;y.cot=x.cot+1;q.push(y);
					}
				}
			}
			if(x.r<c)
			{
				if(x.m)
				{
					if(x.m+x.r<=c)
					{
						y.r=x.r+x.m;y.m=0;y.l=x.l;y.cot=x.cot+1;q.push(y);
					}
					else 
					{
						y.m=x.m-c+x.r;y.r=c;y.l=x.l;y.cot=x.cot+1;q.push(y);
					}
				}
				if(x.l)
				{
					if(x.l+x.r<=c)
					{
						y.r=x.r+x.l;y.l=0;y.m=x.m;y.cot=x.cot+1;q.push(y);
					}
					else 
					{
						y.l=x.l-c+x.r;y.r=c;y.m=x.m;y.cot=x.cot+1;q.push(y);
					}
				}
			}
			if(x.l)
			{
				y.m=x.m+x.l;y.l=0;y.r=x.r;y.cot=x.cot+1;q.push(y);
			}
			if(x.r)
			{
				y.m=x.m+x.r;y.r=0;y.l=x.l;y.cot=x.cot+1;q.push(y);
			}
		}
		if(!flag)
			cout<<"NO"<<endl;
	}

} 

标签:node,int,BFS,vis,1495,102,HDOJ,可乐
From: https://www.cnblogs.com/jinshuli/p/18565139

相关文章

  • 每日OJ题_牛客_AB20走迷宫_BFS_C++_Java
    目录牛客_AB20走迷宫_BFS题目解析C++代码Java代码牛客_AB20走迷宫_BFS走迷宫_牛客题霸_牛客网(nowcoder.com)描述:        给定一个n×m的网格,在网格中每次在不超过边界的情况下可以选择向上、向下、向左、向右移动一格。网格中的一些格子上放置有障碍物,放有......
  • 01 bfs 学习笔记
    当一张图的边权只有\(0\)和\(1\)时,跑dij的堆优化显得比较累赘。因为只有两个取值,所以取\(0\)的时候在队列前面推进来,反之在后面。其他和dij没什么区别,时间复杂度\(O(m)\),其中\(m\)是边数。相关题目:P4554小明的游戏。点击查看代码voidwork(){ m0(vis);mem(di......
  • 算法笔记(十五)——BFS 解决拓扑排序
    文章目录拓扑排序课程表课程表II火星词典拓扑排序有向无环图(DAG图)有向无环图指的是一个无回路的有向图AOV网:顶点活动图在有向无环图中,用顶点表示一个活动,用边来表示活动的先后顺序的图结构拓扑排序找到一个先后顺序,结果可能不唯一如何拓扑排序?找到一......
  • 数据结构课程设计大项目————迷宫问题(邻接矩阵,prim生成算法,DFS寻路,BFS寻路,路径回溯
    一.前言迷宫问题是数据结构中最值得实践的大项目之一,本文主要讲解思路,提供的代码大部分都有注释(没有的就是太多了懒得写了QAQ)。为了更好的表现效果,该程序使用了easyx可视化,easyx简单易学(大概一天到两天就可以学会),上手简单。该程序由c语言实现,本人水平有限程序可优化空间很大。......
  • 【Py/Java/C++三种语言OD独家2024E卷真题】20天拿下华为OD笔试之【DFS/BFS】2024E-开
    可上欧弟OJ系统练习华子OD、大厂真题绿色聊天软件戳oj1441了解算法冲刺训练(备注【CSDN】否则不通过)文章目录相关推荐阅读题目描述与示例题目描述输入输出示例一输入输出说明示例二输入输出解题思路代码解法一:BFSpythonjavacpp......
  • bfs 与优先队列————洛谷p1126(历经两个小时总算AC了,哭晕)
    机器人搬重物题目描述机器人移动学会(RMI)现在正尝试用机器人搬运物品。机器人的形状是一个直径\(1.6\)米的球。在试验阶段,机器人被用于在一个储藏室中搬运货物。储藏室是一个\(N\timesM\)的网格,有些格子为不可移动的障碍。机器人的中心总是在格点上,当然,机器人必须在最短的时......
  • bfs与优先队列 [NOIP2017 普及组] 棋盘————洛谷p3956
    [NOIP2017普及组]棋盘题目背景NOIP2017普及组T3题目描述有一个\(m\timesm\)的棋盘,棋盘上每一个格子可能是红色、黄色或没有任何颜色的。你现在要从棋盘的最左上角走到棋盘的最右下角。任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的),你只能向上、下、左、右......
  • 简单搜索(BFS,DFS,剪枝)一网打尽
    深搜DFS含义深搜是一种遍历或搜索图和树的算法。实现方式(不撞南墙不回头)根据题目选择一个适合的源节点,从源节点开始选择一条路一直走,直到无法前进(不满足题目条件)时,返回到上一个节点重新尝试,直到当前的节点的所有子节点都已经被访问过,再次返回到当前节点的上一节点,继续重复......
  • BFS 马的遍历————洛谷p1443
    马的遍历题目描述有一个\(n\timesm\)的棋盘,在某个点\((x,y)\)上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。输入格式输入只有一行四个整数,分别为\(n,m,x,y\)。输出格式一个\(n\timesm\)的矩阵,代表马到达某个点最少要走几步(不能到达则输出\(-......
  • BFS 颜色填涂———洛谷p1162
    填涂颜色题目描述由数字\(0\)组成的方阵中,有一任意形状的由数字\(1\)构成的闭合圈。现要求把闭合圈内的所有空间都填写成\(2\)。例如:\(6\times6\)的方阵(\(n=6\)),涂色前和涂色后的方阵如下:如果从某个\(0\)出发,只向上下左右\(4\)个方向移动且仅经过其他\(0\)的情况下......