Description

给定一个1~n的排列x,每次你可以将x1~xi翻转。你需要求出将序列变为升序的最小操作次数。有多组数据。

Input

第一行一个整数t表示数据组数。
每组数据第一行一个整数n,第二行n个整数x1~xn。

Output

每组数据输出一行一个整数表示答案。

Sample Input

1
8
8 6 1 3 2 4 5 7

Sample Output

7

Data Constraint

对于100%的测试数据,t=5,n<=25。
对于测试点1,2,n=5。
对于测试点3,4,n=6。
对于测试点5,6,n=7。
对于测试点7,8,9,n=8。
对于测试点10,n=9。
对于测试点11,n=10。
对于测试点i (12<=i<=25),n=i。

Solution

  • 别被题目吓到,这题的正解就是迭代加深搜索。

  • 可是怎么剪枝呢(本人搜索能力较差)?

  • 如果相邻两个数的差大于1(这样数对称之为逆对)的话,那么显然至少要一次交换才能换过来,

  • 那么如果当前的交换次数加上逆对的个数大于当前迭代的深度,就可以直接退出了。

Code

#include<cstdio>
#include<algorithm>
using namespace std;
int n,ans;
bool pd;
int a[26];
inline int read()
{int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
inline void dfs(int x,int y)
{if(x+y>ans) return;bool p=true;for(int i=1;i<=n;i++)if(a[i]!=i){p=false;break;}if(p){pd=true;return;}for(int i=2;i<=n;i++){int z=y;if(i<n){if(abs(a[i]-a[i+1])==1) z++;if(abs(a[1]-a[i+1])==1) z--;}reverse(a+1,a+1+i);dfs(x+1,z);if(pd) return;reverse(a+1,a+1+i);}
}
int main()
{int T=read();while(T--){n=read();int s=pd=0;for(int i=1;i<=n;i++){a[i]=read();if(i>1 && abs(a[i]-a[i-1])>1) s++;}for(ans=0;!pd;ans++) dfs(0,s);printf("%d\n",--ans);}return 0;
}

JZOJ 5441. 【NOIP2017提高A组冲刺11.1】序列相关推荐

  1. JZOJ 5458. 【NOIP2017提高A组冲刺11.7】质数

    Description 小X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感.小X 认为,质数是一切自然数起源的地方. 在小X 的认知里,质数是除了本身和1 以外,没有其他因数的数 ...

  2. JZOJ 5455. 【NOIP2017提高A组冲刺11.6】拆网线

    Description 企鹅国的网吧们之间由网线互相连接,形成一棵树的结构.现在由于冬天到了,供暖部门缺少燃料,于是他们决定去拆一些网线来做燃料.但是现在有K只企鹅要上网和别人联机游戏,所以他们需要把 ...

  3. JZOJ 5445. 【NOIP2017提高A组冲刺11.2】失格

    Description 胆小鬼连幸福都会害怕,碰到棉花都会受伤,有时还被幸福所伤. --太宰治<人间失格> 回顾我的一生,一共有n个事件,每一个事件有一个幸福值p_i. 我想用n-1条线把 ...

  4. JZOJ 5466. 【NOIP2017提高A组冲刺11.9】玩游戏

    Description 小A得了忧郁综合症,小B正在想办法开导她. 机智的小B决定陪着小A玩游戏,他从魔法的世界里变出一张无向联通图,每条边上都有边权.小B定义一条路径的权值为所有经过边中的最大权值, ...

  5. JZOJ 5462. 【NOIP2017提高A组冲刺11.8】好文章

    Description nodgd写了一篇文章,自认为这是一篇好文章.nodgd的文章由n个小写英文字母组成.文章的一个子串指的是文章中的一段连续的字母,子串的长度就是这一段的字母个数.nodgd在文 ...

  6. JZOJ 5463. 【NOIP2017提高A组冲刺11.8】证书

    Description Pulumi生活在P城的角落,而他的朋友们gjdy,oyski,tutuwai等等生活在P城的靠中心位置. P城很大,但它拥有优秀的城市结构,同时P城重视文化教育的发展,P城共 ...

  7. JZOJ 5460. 【NOIP2017提高A组冲刺11.7】士兵训练

    Description Input 第一行两个数n,q 表示士兵数以及阅兵次数. 接下来一行n-1 个整数,第i 个整数表示士兵i+1 的直属教官. 接下来n 行每行两个整数i i b ,l 描述一位 ...

  8. JZOJ 5459. 【NOIP2017提高A组冲刺11.7】密室

    Description 小X 正困在一个密室里,他希望尽快逃出密室. 密室中有N 个房间,初始时,小X 在1 号房间,而出口在N 号房间. 密室的每一个房间中可能有着一些钥匙和一些传送门,一个传送门会 ...

  9. JZOJ 5454. 【NOIP2017提高A组冲刺11.5】仔细的检查

    Description nodgd家里种了一棵树,有一天nodgd比较无聊,就把这棵树画在了一张纸上.另一天nodgd更无聊,就又画了一张. 这时nodgd发现,两次画的顺序是不一样的,这就导致了原本 ...

最新文章

  1. grub2 命令行进入系统
  2. SessionID 的本质
  3. Http协议(7)—Http缓存
  4. 【渝粤教育】国家开放大学2018年春季 0004-21T有机合成单元反应 参考试题
  5. php 获取今天数据,ThinkPHP 按日期获取今天获取本周获取本月获取今年数据
  6. Postgresql 填充所有的时间点
  7. 音视频开发进阶指南--音视频概念基础
  8. sqlserver 累计数量_用sqlserver查询累计值
  9. 平安银行支付接口 PHP ECSHOP
  10. ppt太大怎么压缩变小?ppt压缩方法和步骤
  11. 使用ps 制作gif 动图
  12. 怎么把计算机光盘盒弹出,台式电脑10怎么弹出光驱-光驱台式机机箱打开方法
  13. 彩钢板进行BS 476-3屋顶外露部分防火测试
  14. “衣带渐宽终不悔,为伊消得人憔悴” 读《唐宋词十七讲》有感二 —— 2021.12.23 晚八时
  15. Vue.js写一个本地网址导航网站
  16. html好看的侧滑效果,H5 - 侧滑效果实现
  17. c#中 把字符串转换为拼音码
  18. HDU 4489 The King’s Ups and Downs(组合DP)
  19. 解读 | 数据分析领域七大热门职业
  20. 前端JavaScript(1) --Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏...

热门文章

  1. Golang undefined: strings.ReplaceAll解决
  2. 【转】C++ this指针(直戳本质)
  3. sparse double型矩阵转为full矩阵
  4. [云炬创业基础笔记]第七章创业资源测试6
  5. vue在微信里面的兼容问题_vuejs在安卓系统下微信X5内核这个兼容性问题如何破?...
  6. 独立成分分析ICA系列5:信息极大化的 ICA 算法
  7. 我所理解的离散傅里叶变换_DFT
  8. C++/Cli中事件对象处理函数的添加与删除
  9. --SQL code# --创建表及字段描述信息
  10. c++与Delphi中的类型转换