hdu1685
来源:互联网 发布:自制4g网络信号增强器 编辑:程序博客网 时间:2024/05/19 15:23
蒟蒻的提生
。。。
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <cmath>using namespace std;int save[20],n,m,len,ans;void change(int *a,int p1,int p2,int p3){ int tmp[20]; for (int i=p1;i<=p2;i++) tmp[i]=a[i]; for (int i=p2+1;i<=p3;i++) a[i-p2+p1-1]=a[i]; for (int i=p1+p3-p2;i<=p3;i++) a[i]=tmp[i+p2-p3];}int h(int p[]){ int val=0; if(p[1]!=1) val=1; for(int i=1;i<n;i++) if(p[i+1]!=p[i]+1) val++; val=(val+2)/3; return val;}bool dfs(int dep,int p[]){ int val=h(p); if(val==0) {ans=dep;return true;} if(dep+val>len) return false; if(dep>len)return false; int tmp[20]={0}; /* printf("%d\n",dep); for(int i=1;i<=n;i++) { printf("%d ",p[i]); } printf("\n"); system("pause");*/ for(int i=1;i<n;i++) { for(int j=i+1;j<=n;j++) { for(int k=i;k<j;k++) { for(int l=1;l<=n;l++) { tmp[l]=p[l]; } change(tmp,i,k,j); if(dfs(dep+1,tmp)) return 1; } } } return 0;}int main(){ int cases; scanf("%d",&cases); while(cases--) { ans=0; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&save[i]); len=1; if(h(save)==0) { printf("0\n"); continue; } while(1) { if(dfs(0,save))break; len++; if(len>=5){ans=5;break;} } printf("%d",ans); if(ans>=5) { printf(" or more"); } printf("\n"); } return 0;}
。。。
0 0
- hdu1685
- hdu1685 GCD 容斥原理
- Linux------进程的创建和终结
- 杭电 1231 最大连续子序列
- 校招【 笔试面试 】准备之C语言 基础知识一
- Java提高篇(三六)-----java集合细节(二):asList的缺陷
- hadoop分布式部署系列3:YARN
- hdu1685
- ReportStudio入门教程(七十七) - 自定义排名规则
- .NET中深复制与浅复制
- 用宏定义,不用?:和比较switch等求两个数中较大的数
- Linux下C/C++程序调试基础(GCC,G++,GDB,CGDB,DDD)
- 模拟解hdu1283 最简单的计算机
- TCP/IP SOCKET HTTP及HTTPS之间的关系及各自特性之总结
- Opencascade学习
- MTK面试归来