IOI1994 北京2008的挂钟 迭代加深
总的来讲,这是一道很⑨的题,因为:
(1)题目中有⑨个挂钟
(2)有⑨种操作方案
(3)这题因为解空间太小所以可以直接⑨重循环!!
这题可以用迭代加深搜索高效求解,剪枝的策略也很显然:
>所求的操作序列一定是单调不递减的
>同一操作不可能在解中出现4次及以上(操作4次等于没有操作)
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
]={};
]={};
]={};
void move(int _cmd)
{
++cmdCnt[_cmd];
switch(_cmd)
{
: ++dir[]; ++dir[]; ++dir[]; ++dir[]; break;
: ++dir[]; ++dir[]; ++dir[]; break;
: ++dir[]; ++dir[]; ++dir[]; ++dir[]; break;
: ++dir[]; ++dir[]; ++dir[]; break;
: ++dir[]; ++dir[]; ++dir[]; ++dir[]; ++dir[]; break;
: ++dir[]; ++dir[]; ++dir[]; break;
: ++dir[]; ++dir[]; ++dir[]; ++dir[]; break;
: ++dir[]; ++dir[]; ++dir[]; break;
: ++dir[]; ++dir[]; ++dir[]; ++dir[]; break;
}
}
void undo(int _cmd)
{
--cmdCnt[_cmd];
switch(_cmd)
{
: --dir[]; --dir[]; --dir[]; --dir[]; break;
: --dir[]; --dir[]; --dir[]; break;
: --dir[]; --dir[]; --dir[]; --dir[]; break;
: --dir[]; --dir[]; --dir[]; break;
: --dir[]; --dir[]; --dir[]; --dir[]; --dir[]; break;
: --dir[]; --dir[]; --dir[]; break;
: --dir[]; --dir[]; --dir[]; --dir[]; break;
: --dir[]; --dir[]; --dir[]; break;
: --dir[]; --dir[]; --dir[]; --dir[]; break;
}
}
inline bool isDest()
{
;i<=;i++) ) return false;
return true;
}
bool search_aux(int _maxDepth,int _curDepth,int _lastCmd)
{
if(isDest()) return true;
if(_curDepth > _maxDepth) return false;
;i++)
{
)
{
move(i);
,i);
undo(i);
if(next) { ++ans[i]; return true; }
}
}
return false;
}
void input()
{
;i<=;i++) scanf("%d",dir+i);
}
void search()
{
;;i++) ,)) return;
}
void printAns()
{
;i<=;i++)
while(ans[i]--) printf("%d ",i);
}
int main()
{
input();
search();
printAns();
;
}
Cirno is willing to try this problem (*^__^*)
IOI1994 北京2008的挂钟 迭代加深的更多相关文章
- vijosP1016 北京2008的挂钟
vijosP1016 北京2008的挂钟 题目链接:https://vijos.org/p/1016 [思路] Dfs. 对操作搜索更加优秀,所以采用搜索每一个操作的使用次数,因为操作数为4则相当于没 ...
- Vijos——T 1016 北京2008的挂钟 || 洛谷—— P1213 时钟
https://www.luogu.org/problem/show?pid=1213 题目描述 考虑将如此安排在一个 3 x 3 行列中的九个时钟: 目标要找一个最小的移动顺序将所有的指针指向12点 ...
- POJ1129Channel Allocation[迭代加深搜索 四色定理]
Channel Allocation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14601 Accepted: 74 ...
- BZOJ1085: [SCOI2005]骑士精神 [迭代加深搜索 IDA*]
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1800 Solved: 984[Submit][Statu ...
- 迭代加深搜索 POJ 1129 Channel Allocation
POJ 1129 Channel Allocation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14191 Acc ...
- 迭代加深搜索 codevs 2541 幂运算
codevs 2541 幂运算 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 从m开始,我们只需要6次运算就可以计算出 ...
- HDU 1560 DNA sequence (IDA* 迭代加深 搜索)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1560 BFS题解:http://www.cnblogs.com/crazyapple/p/321810 ...
- usaco4.12Fence Rails(迭代加深)
为了这题还去学了下迭代加深 回来还是不会写 只好参考各大神的代码及题解了 二分枚举最大可以切的块数 然后就是各种分析及优化 USACO题解里写了7个优化.. 问题分析 抽象一下就可以发现,算法的本质是 ...
- poj2286The Rotation Game(迭代加深dfs)
链接 把迭代加深理解错了 自己写了半天也没写对 所谓迭代加深,就是在深度无上限的情况下,先预估一个深度(尽量小)进行搜索,如果没有找到解,再逐步放大深度搜索.这种方法虽然会导致重复的遍历 某些结点,但 ...
随机推荐
- 关于响应事件中的Sender
很多响应事件都会有个参数就是Sender,如下: - (IBAction)updateSliderValue:(id)sender Sender其实就是触发响应的那个实例对象,比如这个消息是由一个UI ...
- TC358746AXBG/748XBG 桥接器说明
为什么需要这个mipi csi-2 bridge 芯片,由于我们用的sensor 芯片是美光的MT9m021,这颗芯片并不支持MIPI 下面是网上摘录的说明可能解释这个问题: Because of t ...
- MongoDB简单操作
Hadoop核心技术厂商Cloudera将在2014/06推出hadoop Ecosystem与MongoDB的整合产品,届时MongoDB与ipmala及hbase,hive一起用; 开源linux ...
- Action
学习Action的几个内容 1.实现一个Action的最常用方式: 从ActionSupport继承 链接 2.Action配置 DMI动态方法调用 ! 通配符配置 * {1} {2} … * ...
- UINavigationBar-使用总结
多视图应用程序中,我们常常使用到自定义UINavigationBar来完成导航条的设置. 1.获取导航条 UINavigationBar *navBar = self.navigationCo ...
- flipsnap--手机屏幕水平滑动框架
在很多手机应用中,大家都会见过这样一种效果:当手指横向滑动屏幕时,屏幕上的页面会向左或向右滑动. 下面介绍一下当用HTML5+CSS3开发手机应用时解决这类效果的一款js框架:flipsnap. fl ...
- AnonymousType匿名类型和对象之间的转换
本文转载:http://www.cnblogs.com/dean-Wei/p/3150553.html 一.匿名对象转换为对象. 1.问题: 2.解决方案:强制指定类型. 解决之. 二. 对象转换为匿 ...
- centos6.4安装flashcache
FlashCache呢是Facebook技术团队的又一力作,最初是为加速MySQL设计的.Flashcache是在Linux层面的,所以任何受磁盘IO困绕的软件或应用都可以方便的使用.为什么是用于加速 ...
- 面试时,问哪些问题能试出一个Android应用开发者真正的水平?
一般面试时间短则30分钟,多则1个小时,这么点时间要全面考察一个人难度很大,需要一些技巧,这里我不局限于回答题主的问题,而是分享一下我个人关于如何做好Android技术面试的一些经验: 面试前的准备 ...
- jQuery 插件开发 笔记
JQuery 插件开发: 类级别开发,开发新的全局函数 对象级别开发,给Jquery对象开发新方法 一.类级别开发 -定义全局方法 jQuery.foo = function() { alert('T ...