JZOJ 5441. 【NOIP2017提高A组冲刺11.1】序列
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】序列相关推荐
- JZOJ 5458. 【NOIP2017提高A组冲刺11.7】质数
Description 小X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感.小X 认为,质数是一切自然数起源的地方. 在小X 的认知里,质数是除了本身和1 以外,没有其他因数的数 ...
- JZOJ 5455. 【NOIP2017提高A组冲刺11.6】拆网线
Description 企鹅国的网吧们之间由网线互相连接,形成一棵树的结构.现在由于冬天到了,供暖部门缺少燃料,于是他们决定去拆一些网线来做燃料.但是现在有K只企鹅要上网和别人联机游戏,所以他们需要把 ...
- JZOJ 5445. 【NOIP2017提高A组冲刺11.2】失格
Description 胆小鬼连幸福都会害怕,碰到棉花都会受伤,有时还被幸福所伤. --太宰治<人间失格> 回顾我的一生,一共有n个事件,每一个事件有一个幸福值p_i. 我想用n-1条线把 ...
- JZOJ 5466. 【NOIP2017提高A组冲刺11.9】玩游戏
Description 小A得了忧郁综合症,小B正在想办法开导她. 机智的小B决定陪着小A玩游戏,他从魔法的世界里变出一张无向联通图,每条边上都有边权.小B定义一条路径的权值为所有经过边中的最大权值, ...
- JZOJ 5462. 【NOIP2017提高A组冲刺11.8】好文章
Description nodgd写了一篇文章,自认为这是一篇好文章.nodgd的文章由n个小写英文字母组成.文章的一个子串指的是文章中的一段连续的字母,子串的长度就是这一段的字母个数.nodgd在文 ...
- JZOJ 5463. 【NOIP2017提高A组冲刺11.8】证书
Description Pulumi生活在P城的角落,而他的朋友们gjdy,oyski,tutuwai等等生活在P城的靠中心位置. P城很大,但它拥有优秀的城市结构,同时P城重视文化教育的发展,P城共 ...
- JZOJ 5460. 【NOIP2017提高A组冲刺11.7】士兵训练
Description Input 第一行两个数n,q 表示士兵数以及阅兵次数. 接下来一行n-1 个整数,第i 个整数表示士兵i+1 的直属教官. 接下来n 行每行两个整数i i b ,l 描述一位 ...
- JZOJ 5459. 【NOIP2017提高A组冲刺11.7】密室
Description 小X 正困在一个密室里,他希望尽快逃出密室. 密室中有N 个房间,初始时,小X 在1 号房间,而出口在N 号房间. 密室的每一个房间中可能有着一些钥匙和一些传送门,一个传送门会 ...
- JZOJ 5454. 【NOIP2017提高A组冲刺11.5】仔细的检查
Description nodgd家里种了一棵树,有一天nodgd比较无聊,就把这棵树画在了一张纸上.另一天nodgd更无聊,就又画了一张. 这时nodgd发现,两次画的顺序是不一样的,这就导致了原本 ...
最新文章
- grub2 命令行进入系统
- SessionID 的本质
- Http协议(7)—Http缓存
- 【渝粤教育】国家开放大学2018年春季 0004-21T有机合成单元反应 参考试题
- php 获取今天数据,ThinkPHP 按日期获取今天获取本周获取本月获取今年数据
- Postgresql 填充所有的时间点
- 音视频开发进阶指南--音视频概念基础
- sqlserver 累计数量_用sqlserver查询累计值
- 平安银行支付接口 PHP ECSHOP
- ppt太大怎么压缩变小?ppt压缩方法和步骤
- 使用ps 制作gif 动图
- 怎么把计算机光盘盒弹出,台式电脑10怎么弹出光驱-光驱台式机机箱打开方法
- 彩钢板进行BS 476-3屋顶外露部分防火测试
- “衣带渐宽终不悔,为伊消得人憔悴” 读《唐宋词十七讲》有感二 —— 2021.12.23 晚八时
- Vue.js写一个本地网址导航网站
- html好看的侧滑效果,H5 - 侧滑效果实现
- c#中 把字符串转换为拼音码
- HDU 4489 The King’s Ups and Downs(组合DP)
- 解读 | 数据分析领域七大热门职业
- 前端JavaScript(1) --Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏...
热门文章
- Golang undefined: strings.ReplaceAll解决
- 【转】C++ this指针(直戳本质)
- sparse double型矩阵转为full矩阵
- [云炬创业基础笔记]第七章创业资源测试6
- vue在微信里面的兼容问题_vuejs在安卓系统下微信X5内核这个兼容性问题如何破?...
- 独立成分分析ICA系列5:信息极大化的 ICA 算法
- 我所理解的离散傅里叶变换_DFT
- C++/Cli中事件对象处理函数的添加与删除
- --SQL code# --创建表及字段描述信息
- c++与Delphi中的类型转换