题目链接:https://nanti.jisuanke.com/t/39279

题意:给定n个不同的数表示的序列,定义两种操作:1. 交换前一半和后一半(如果有奇数个,则中间的不管)。2. 交换每个偶数位和它之前的数(如果有奇数个,最后一个不管)。问通过这两种操作,可以得到多少个不同的序列。

思路:典型的打表找规律的题,下次比赛吸取教训。打表的代码如下:

#include<cstdio>
using namespace std; int a[],b[];
int n,ans; bool check(){
bool flag=;
for(int i=;i<=n;++i)
if(a[i]!=b[i]){
flag=;
break;
}
return flag;
} int main(){
for(n=;n<=;++n){
int hf=n/;
ans=;
for(int i=;i<=n;++i)
a[i]=i,b[i]=i;
while(){
for(int i=;i<=hf;++i){
int tmp=b[i];
b[i]=b[n-hf+i];
b[n-hf+i]=tmp;
}
if(check()) break;
++ans;
for(int i=;i<=n-;i+=){
int tmp=b[i];
b[i]=b[i+];
b[i+]=tmp;
}
if(check()) break;
++ans;
}
printf("%d:%d\n",n,ans+);
}
return ;
}

然后就可以找到规律了:

n%4==0: ans=4

n%4==1: if(n==1) ans=1

     else ans=2*n

n%4==2: ans=n

n%4==3: if(n==3) ans=6

     else ans =12

AC代码:

#include<cstdio>
using namespace std; int a[],b[];
int n,ans; bool check(){
bool flag=;
for(int i=;i<=n;++i)
if(a[i]!=b[i]){
flag=;
break;
}
return flag;
} int main(){
for(n=;n<=;++n){
int hf=n/;
ans=;
for(int i=;i<=n;++i)
a[i]=i,b[i]=i;
while(){
for(int i=;i<=hf;++i){
int tmp=b[i];
b[i]=b[n-hf+i];
b[n-hf+i]=tmp;
}
if(check()) break;
++ans;
for(int i=;i<=n-;i+=){
int tmp=b[i];
b[i]=b[i+];
b[i+]=tmp;
}
if(check()) break;
++ans;
}
printf("%d:%d\n",n,ans+);
}
return ;
}

最新文章

  1. VBS整人代码
  2. html转义字符
  3. JSON in JavaScript Asp.net
  4. [转]ORACLE 动态执行SQL语句
  5. Html5 Egret游戏开发 成语大挑战(一)开篇
  6. JavaWeb学习笔记——JavaEE基础知识
  7. Octave下载
  8. Kafka-4614问题复盘 (MappedByteBuffer未关闭导致慢磁盘访问)
  9. accp8.0转换教材第11章JAjax加护扩展理解与练习
  10. ActiveReports报表控件 V13 正式发布,提供在线报表设计和自适应报表布局
  11. C# 连蒙带骗不知所以然的搞定USB下位机读写
  12. mysql学习--1.事务
  13. JS获取IOS版本号
  14. 几种好用的经典webshell(php)
  15. Docker学习笔记之通过 Dockerfile 创建镜像
  16. angular 我看过的技术书籍
  17. AWS服务学习
  18. 地球椭球体(Ellipsoid)、大地基准面(Datum)及地图投影(Projection)三者的基本概念
  19. async 和 await的前世今生 (转载)
  20. Oracle中varchar2(XX)和varchar2(XX byte)区别

热门文章

  1. ASCII和UTF-8
  2. pyton3的数字操作你都会用吗?
  3. c++ gdb调试的基本使用
  4. git commit 合并到指定分支
  5. 学习UEFI 之你把C语言学好了码?学习UEFI 之你把C语言学好了吗?
  6. CentOS修改Mysql字符集
  7. java判断一个字符串是否为数字型
  8. import 和 require 的 区别
  9. android data binding jetpack IV 绑定一个方法另一种写法和参数传递
  10. Android jni/ndk编程四:jni引用类型