poj2908解题报告
来源:互联网 发布:阿里云设置dns解析 编辑:程序博客网 时间:2024/05/21 12:33
很不错的一道广搜题。题目给出nop个操作,由N(什么都不做),S(置1),C(置0),F(反转)等基本操作组成,每一种操作会产生不同的热量。又给出nw组初始字符串和目标字符串,要求出将初始字符串转化成目标字符串至少需要产生的热量;有可能没有解,此时输出“NP”。
这道题有两个关键,第一是优先队列的思想,而且必须是自己写的优先队列,STL一般是会超时的。本程序优先队列部分参考《算法导论》(在这道题里就是小根堆)。第二个关键就是必须在每次出队的时候判断是否达到转移目标,是则结束搜索。可能会觉得这样不能保证最优解。比如对于操作1,2,3,4(产热记为Q1,Q2,Q3,Q4),有可能1+3和2+4都能达到目标状态;不妨设Q1=1,Q2=2,Q3=5,Q4=2(显然2+4是最优解),这样的话操作1先于操作2入队,然而这是不是就会导致程序先搜索1+3,从而不正确地退出呢?不会的。虽然1+3确实先入队,但是要注意,这里使用的是优先队列,2+4会“优先”出队,故最优解得到了保证。
当然此题还需要把hash写好,直接使用STL中的map也是会超时的。
- poj2908解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- Antiprime解题报告
- expr解题报告
- 华容道解题报告
- tju解题报告
- zju1062/pku1095解题报告
- UsacoGate解题报告 --- 序曲
- ZJU 2060 解题报告
- ZJU 1331 解题报告
- ZJU 1115 解题报告
- ZJU1057解题报告
- HTTP协议报文格式
- 任意阶幻方(魔方阵)的C语言构造算法
- HTTP协议分析
- Http 协议学习链接
- 搜索文件
- poj2908解题报告
- TTS语音系统学习
- 浅谈C++变量命名规则
- 写给自己
- lua2.1的基本数据结构(有不确定的地方,请勿被误导)
- ASP.NET页面间传值方式
- 圆的绘制算法
- Eclipse插件的安装与配置
- ant学习