题目

题目

 


 

分析

get一下IDA*的技巧,感觉总体来说不难,主要是剪枝比较难想。

这是lrj的代码,比较通俗易懂,关键就是选定一个区间再取出来,插入到一个位置,接下来转移到这个状态。

 


 

代码

#include <bits/stdc++.h>
using namespace std; const int maxn=10;
int n,a[maxn]; bool is_sorted()
{
for(int i=0;i<n-1;i++)
if(a[i]>=a[i+1]) return false;
return true;
} int h()
{
int cnt=0;
for(int i=0;i<n-1;i++)
if(a[i]+1!=a[i+1]) cnt++;
if(a[n-1]!=n) cnt++;
return cnt;
} bool dfs(int d,int maxd)
{
if(d*3+h() > maxd*3) return false;
if(is_sorted()) return true; int b[maxn],olda[maxn];
memcpy(olda,a,sizeof(a));
for(int i=0;i<n;i++)
for(int j=i;j<n;j++)
{
//cut
int cnt=0;
for(int k=0;k<n;k++)
if(k<i || k>j) b[cnt++]=a[k]; //insert
for(int k=0;k<=cnt;k++)
{
int cnt2=0;
for(int p=0;p<k;p++) a[cnt2++]=b[p];
for(int p=i;p<=j;p++) a[cnt2++]=olda[p];
for(int p=k;p<cnt;p++) a[cnt2++]=b[p]; if(dfs(d+1,maxd)) return true;
memcpy(a,olda,sizeof(a));
}
}
return false;
} int solve()
{
if(is_sorted()) return 0;
int max_ans=5;
for(int maxd=1;maxd<max_ans;maxd++)
if(dfs(0,maxd)) return maxd;
return max_ans;
}
int main()
{
int kase=0;
while(scanf("%d",&n)==1 && n)
{
for(int i=0;i<n;i++) scanf("%d",&a[i]); printf("Case %d: %d\n",++kase,solve());
}
return 0;
}

【UVa】11212 Editing a Book(IDA*)的更多相关文章

  1. 【UVa】1343 The Rotation Game(IDA*)

    题目 题目     分析 lrj代码.... 还有is_final是保留字,害的我CE了好几发.     代码 #include <cstdio> #include <algorit ...

  2. 【UVA】10635 Prince and Princess(LCS)

    题目 传送门:QWQ 分析 水题.$ O(nlogn) $的LCS 代码 #include <bits/stdc++.h> using namespace std; *, INF=1e9; ...

  3. 【UVa】1606 Amphiphilic Carbon Molecules(计算几何)

    题目 题目 分析 跟着lrj学的,理解了,然而不是很熟,还是发上来供以后复习 代码 #include <bits/stdc++.h> using namespace std; ; stru ...

  4. 【UVA】12504 Updating a Dictionary(STL)

    题目 题目     分析 第一次用stringstream,真TMD的好用     代码 #include <bits/stdc++.h> using namespace std; int ...

  5. 【BZOJ】1085 [SCOI2005]骑士精神(IDA*)

    题目 传送门:QWQ 分析 我好菜啊. 一波IDA*水过去了. 代码 #include <bits/stdc++.h> using namespace std; ; char s[maxn ...

  6. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  7. 【原】FMDB源码阅读(二)

    [原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...

  8. 【原】FMDB源码阅读(一)

    [原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...

  9. 【原】AFNetworking源码阅读(六)

    [原]AFNetworking源码阅读(六) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这一篇的想讲的,一个就是分析一下AFSecurityPolicy文件,看看AF ...

随机推荐

  1. thinkphp3.1 多表联合查询代码

    php代码 public function info(){ $where['openid']=session('openid');////用户session $db = M("pay&quo ...

  2. Content-type与json对象/字符串杂谈

    这几天在对接项目另一个乙方的下行接口,因为最近一直用php开发,所以当那边接口文档上规定了接口传参类型的 时候,瞬间搞混了,但是这次的出错也让我对http的数据传输有了新的认知. 1.http的数据传 ...

  3. EasyPlayer RTSP安卓Android播放器架构简析

    本文转自EasyDarwin开源团队成员John的博客:http://blog.csdn.net/jyt0551/article/details/73310641 EasyPlayer 是一款小而美的 ...

  4. NSLog 打印出方法函数,行数,内容

    #if DEBUG #define NSLog(FORMAT, ...) fprintf(stderr,"\nfunction:%s line:%d content:%s\n", ...

  5. ubuntu创建Centos7镜像&&配置运行环境

    1. 下载centos7镜像 sudo docker pull centos:7 2. 启动centos7容器并挂载本地目录 sudo docker -it -v /home/software:/ho ...

  6. PHP 反引号运行Shell命令,C程序

    /********************************************************************* * PHP 反引号运行Shell命令,C程序 * 说明: ...

  7. 【paper】KDD15 - Interpreting Advertiser Intent in Sponsored Search

    Interpreting Advertiser Intent in Sponsored Search   主要内容是搜索广告的相关性预估模型,使用learning to rank的方法.亮点在于使用了 ...

  8. Win7 使用密码共享磁盘连接总是提示输入密码

    Win7 使用密码共享磁盘连接总是提示输入密码,只要设置下面这里就可以了.默认是保持来宾身份.

  9. CF1109A Sasha and a Bit of Relax

    CF1109A Sasha and a Bit of Relax 用 \(xorsum[l,r]\) 表示 \(a[l] \oplus a[l+1] \oplus a[l+2]... a[r-1] \ ...

  10. vs2010中配置OpenGL以及针对64位系统所遇问题的解决办法

    一.下面将对VS2010中配置OpenGL进行简单介绍. 学习OpenGL前的准备工作 第一步,选择一个编译环境 现在Windows系统的主流编译环境有Visual Studio,Broland C+ ...