【Uva11212】 Editing a Book(IDA*)
【题意】
有n个数字的全排列,每次可以剪切一段粘贴到某个位置。问最后变成升序最少多少步。
如“{2,4,1,5,3,6}要2步
{3,4,5,1,2}只要一步
【分析】
迭代深搜真的AC了也觉得慌= =
【其实看到这题不应该想到宽搜么???
全排列只有9!=362880个
这题的IDA*的估价函数特别机智:
n<=9,最多2需要8步,深度上限为8。
考虑后继不正确的赎回自个数h,可以证明每次剪切时候h最多减少3,因此当3*d+h>3*maxd时可以剪枝。
【证明上面那个画一下就知道,一次复制粘贴只有3个东西的后继被影响。【机智ORZ ....
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cmath>
using namespace std;
#define Maxn 15 int a[Maxn][Maxn],v[Maxn];
int maxd,n;
bool ok; bool ffind(int x,int h)
{
if(x==maxd)
{
if(h!=) return ;
ok=;return ;
}
if(*x+h>*maxd) return ;
for(int i=;i<=n;i++)
for(int j=i;j<=n;j++)
{
for(int k=;k<i;k++)
{
for(int l=i;l<=j;l++) a[x+][k+l-i]=a[x][l];
for(int l=k;l<i;l++) a[x+][l+j-i+]=a[x][l];
for(int l=;l<k;l++) a[x+][l]=a[x][l];
for(int l=j+;l<=n;l++) a[x+][l]=a[x][l];
h=;
for(int l=;l<n;l++) if(a[x+][l+]!=a[x+][l]+) h++; ffind(x+,h);
if(ok==) return ;
}
for(int k=j+;k<=n;k++)
{
for(int l=i;l<=j;l++) a[x+][k+l-j]=a[x][l];
for(int l=;l<i;l++) a[x+][l]=a[x][l];
for(int l=j+;l<=k;l++) a[x+][l-j+i-]=a[x][l];
for(int l=k+;l<=n;l++) a[x+][l]=a[x][l];
h=;
for(int l=;l<n;l++) if(a[x+][l+]!=a[x+][l]+) h++;
ffind(x+,h);
if(ok==) return ;
}
}
return ;
} int main()
{
int kase=;
while()
{
ok=;
scanf("%d",&n);
if(n==) break;
for(int i=;i<=n;i++) scanf("%d",&a[][i]);
int h=;
for(int i=;i<n;i++) if(a[][i+]!=a[][i]+) h++;
printf("Case %d: ",++kase);
for(maxd=;maxd<=n-;maxd++)
{
if(ffind(,h)) {printf("%d",maxd);break;}
}
printf("\n");
}
return ;
}
2016-11-15 09:13:56
【Uva11212】 Editing a Book(IDA*)的更多相关文章
- 【UVa】1374 Power Calculus(IDA*)
题目 题目 分析 IDA*大法好,抄了lrj代码. 代码 #include <cstdio> #include <cstring> #include <a ...
- 【Luogu】P2324骑士精神(IDA*)
题目链接 当guess>limit-deep的时候return就好了. guess是估价函数,值为不在自己地盘上的骑士个数.limit是本次迭代阈值.deep是已经走了多少步. 这个优化是显然的 ...
- 【Swift】iOS开发历险记(二)
前言 这个系列主要是一些开发中遇到的坑记录分享,有助于初学者跨过这些坑,攒够 7 条发一篇. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯 ...
- 洛谷P3379 【模板】最近公共祖先(LCA)
P3379 [模板]最近公共祖先(LCA) 152通过 532提交 题目提供者HansBug 标签 难度普及+/提高 提交 讨论 题解 最新讨论 为什么还是超时.... 倍增怎么70!!题解好像有 ...
- 【函数】Oracle函数系列(2)--数学函数及日期函数
[函数]Oracle函数系列(2)--数学函数及日期函数 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不 ...
- 【原创】OllyDBG 入门系列(一)-认识OllyDBG
****** http://blog.fishc.com/645.html 标 题: [原创]OllyDBG 入门系列(一)-认识OllyDBG作 者: CCDebuger时 间: 2006-0 ...
- CJOJ 2022 【一本通】简单的背包问题(搜索)
CJOJ 2022 [一本通]简单的背包问题(搜索) Description 设有一个背包可以放入的物品重量为S,现有n件物品,重量分别是w1,w2,w3,-wn. 问能否从这n件物品中选择若干件放入 ...
- 【BZOJ3680】吊打XXX(模拟退火)
[BZOJ3680]吊打XXX(模拟退火) 题面 BZOJ 题解 模拟退火... 就是模拟退火 然后这题有毒 各种调参数之后终于\(AC\)了.. 这种题就是玄学呀... 温度要调大 最后跑完还要向四 ...
- 【BZOJ3671】【NOI2014】随机数据生成器(贪心)
[BZOJ3671][NOI2014]随机数据生成器(贪心) 题面 BZOJ 题解 前面的模拟 真的就是语文阅读理解题目 理解清楚题目意思 然后就会发现要求的就是一个贪心 从小往大枚举,检查当前数能不 ...
随机推荐
- media type和media query
media type media type是CSS2的重要属性,通过它,可以针对不同的设备指定不同的样式. media type种类: 用法: <link href="styl ...
- 20160531-20160607springmvc入门
springmvc的基础知识 什么是springmvc? springmvc框架原理(掌握) 前端控制器.处理器映射器.处理器适配器.视图解析器 springmvc入门程序 目的:对前端控制器.处理器 ...
- cisco通过控制口或者通过远程配置交换机
学而不思则罔,思而不学则殆,每天坚持一小步,则成功一大步 下面我们通过Cisco Packet来模拟交换机和路由器的远程和控制台登录配置交换机. 交换机console口的连接与配置方法 (1),在Ci ...
- TD(TestDirector 8.0)在win7 ie8下无法用的解决方案:
1.输入uac进入个人账户管理控制 选择最低 重启 2.以管理员身份进入cmd,执行脚本:bcdedit /set {current} nx AlwaysOff 重启
- (七)Hibernate 映射继承
所有项目导入对应的hibernate的jar包.mysql的jar包和添加每次都需要用到的HibernateUtil.java 第一节:每个具体类对应一个表 Image.java package co ...
- [jquery]基础篇--this与$this区别
参考: http://www.cnblogs.com/hannover/p/4109779.html 1.JQuery this和$(this)的区别 相信很多刚接触JQuery的人,很多都会对$(t ...
- OI中神奇的神器fillchar
传说,Pascal中有一个函数——fillchar.这是高手们装*用的利器,也是大家的神器(大家好才是真的好). 神器介绍: 百度百科说:“Fillchar是Turbo/Borland Pascal的 ...
- (poj)1502 MPI Maelstrom
题目链接:http://poj.org/problem?id=1502 Description BIT has recently taken delivery of their processor A ...
- config spec
config_spec Rules for selecting versions of elements to appear in a view APPLICABILITY Product Comma ...
- QT 常用设置
博文都写在了云笔记里面了,见谅,不想维护两个版本. QT 常用设置