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

COJ1150(食用油)

题目大意:这题跟HDOJ"非常可乐"那题很像,用状态空间搜索即可。

View Code
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <queue>
 4 #define N 101
 5 #define MIN(a,b) ((a)<(b)?(a):(b))
 6 using namespace std;
 7 typedef struct node
 8 {
 9   int v[2],t;
10 }node;
11 node cur,next;
12 queue<node> Q;
13 int a[2],c;
14 char vis[N][N];
15 node st_tran(node tmp,int i)
16 {
17   int d;
18   switch(i)
19   {
20     case 0: tmp.v[0]=a[0];  break;
21     case 1: tmp.v[1]=a[1];  break;
22     case 2: tmp.v[0]=0; break;
23     case 3: tmp.v[1]=0; break;
24     case 4: d=MIN(tmp.v[0],a[1]-tmp.v[1]),tmp.v[0]-=d,tmp.v[1]+=d;  break;
25     case 5: d=MIN(tmp.v[1],a[0]-tmp.v[0]),tmp.v[1]-=d,tmp.v[0]+=d;  break;
26   }
27   tmp.t++;
28   return tmp;
29 }
30 void bfs()
31 {
32   bool success=false;
33   int ans;
34   memset(vis,0,sizeof(vis));
35   while(!Q.empty()) Q.pop();
36   cur.v[0]=cur.v[1]=0;
37   cur.t=0;
38   vis[0][0]=1;
39   Q.push(cur);
40   while(!Q.empty() && !success)
41   {
42     cur=Q.front(),Q.pop();
43     if(cur.v[0]==c || cur.v[1]==c)  success=true,ans=cur.t;
44     for(int i=0;!success && i<6;i++)
45     {
46       next=st_tran(cur,i);
47       if(vis[next.v[0]][next.v[1]]) continue;
48       if(next.v[0]==c || next.v[1]==c)  success=true,ans=next.t;
49       else  vis[next.v[0]][next.v[1]]=1,Q.push(next);
50     }
51   }
52   if(success) printf("%d\n",ans);
53   else  puts("-1");
54 }
55 int main()
56 {
57   while(~scanf("%d%d%d",&a[0],&a[1],&c))
58   {
59     bfs();
60   }
61   return 0;
62 }

 

转载于:https://www.cnblogs.com/algorithms/archive/2012/05/17/2506653.html

相关文章:

  • Tomcat jdk配置及内存设置
  • 复习笔记
  • [转]Web前端研发工程师编程能力飞升之路
  • oracle合并记录的用法merge
  • 使用武器CALL
  • VB.NET Frm的hide close dispose
  • SetWindowRgn文字窗体
  • redis内存示意图
  • Spring最佳实践-9.1 集成邮件服务
  • java 并行 用happen-before规划重新审视DCL
  • 排序规则在全角与半角处理中的应用
  • 细节解密NDIS协议驱动为什么能捕获到发送包
  • Geofence是什么
  • 语音的前置处理(一)
  • 关于成都局2012年春运期间客票预售期调整的通知
  • [case10]使用RSQL实现端到端的动态查询
  • [译] React v16.8: 含有Hooks的版本
  • AHK 中 = 和 == 等比较运算符的用法
  • Angular 2 DI - IoC DI - 1
  • flutter的key在widget list的作用以及必要性
  • Java面向对象及其三大特征
  • KMP算法及优化
  • laravel5.5 视图共享数据
  • ucore操作系统实验笔记 - 重新理解中断
  • webgl (原生)基础入门指南【一】
  • 阿里云前端周刊 - 第 26 期
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 判断客户端类型,Android,iOS,PC
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 一道闭包题引发的思考
  • 由插件封装引出的一丢丢思考
  • 字符串匹配基础上
  • nb
  • C# - 为值类型重定义相等性
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #Linux(Source Insight安装及工程建立)
  • #LLM入门|Prompt#3.3_存储_Memory
  • #前后端分离# 头条发布系统
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (二十四)Flask之flask-session组件
  • (四)JPA - JQPL 实现增删改查
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET简谈设计模式之(单件模式)
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .pyc文件是什么?
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • @Autowired标签与 @Resource标签 的区别
  • [Angular] 笔记 20:NgContent
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [BSGS算法]纯水斐波那契数列