看了codeforces上的大神写的题解之后,才知道这道题水的根本!

不过相对前面两题来说,这道题的思维要难一点;

不过想到了水的根本,这题也真心不难;

方法嘛,就像剥洋葱一样,从外面往里面剥;

所以呢,dfs,每次往左或者往右找到乱序的那个元素,反转一下;

这样就行了,而且题目说了保证能够在三次内搞定;

证明我也不会,意思应该就是这样了!

 #include<cstdio>
#include<vector>
#include<algorithm>
#define maxn 1009
using namespace std;
int a[maxn],n;
vector<int>l,r;
bool found=;
int checkleft()
{
for(int i=;i<=n;i++)
if(a[i]!=i) return i;
return -;
}
int checkright()
{ for(int i=n;i>;i--)
if(a[i]!=i) return i;
return -;
}
int getpos(int x)
{
for(int i=;i<=n;i++)
if(a[i]==x) return i;
}
void print()
{
printf("%d\n",l.size());
for(int i=l.size()-;i>=;i--)
printf("%d %d\n",l[i],r[i]);
} void dfs(int level)
{
if(checkleft()==-)
{
print();
found=;
}
if(found||level==) return;
int ll=checkleft();
int pp=getpos(ll);
reverse(a+ll,a+pp+);
l.push_back(ll);
r.push_back(pp);
dfs(level+);
if(found) return;
reverse(a+ll,a+pp+);
l.pop_back();
r.pop_back();
int rr=checkright();
pp=getpos(rr);
reverse(a+pp,a+rr+);
l.push_back(pp);
r.push_back(rr);
dfs(level+);
if(found) return;
reverse(a+pp,a+rr+);
l.pop_back();
r.pop_back();
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
dfs();
return ;
}

Codeforces Round #197 (Div. 2) : E的更多相关文章

  1. 线段树 Codeforces Round #197 (Div. 2) D. Xenia and Bit Operations

    题目传送门 /* 线段树的单点更新:有一个交叉更新,若rank=1,or:rank=0,xor 详细解释:http://www.xuebuyuan.com/1154895.html */ #inclu ...

  2. [置顶] Codeforces Round #197 (Div. 2)(完全)

    http://codeforces.com/contest/339/ 这场正是水题大放送,在家晚上限制,赛后做了虚拟比赛 A,B 乱搞水题 C 我是贪心过的,枚举一下第一个拿的,然后选使差值最小的那个 ...

  3. Codeforces Round #197 (Div. 2) (A、B、C、D、E五题合集)

    A. Helpful Maths 题目大意 给一个连加计算式,只包含数字 1.2.3,要求重新排序,使得连加的数字从小到大 做法分析 把所有的数字记录下来,从小到大排序输出即可 参考代码 #inclu ...

  4. Codeforces Round #197 (Div. 2)

    A.Helpful Maths 分析:将读入的字符转化为数字,直接排个序就可以了. #include <cstdlib> #include <cstring> #include ...

  5. Codeforces Round #197 (Div. 2) C,D两题

    开了个小号做,C题一开始看错范围,D题看了半小时才看懂,居然也升到了div1,囧. C - Xenia and Weights 给出一串字符串,第i位如果是1的话,表示有重量为i的砝码,如果有该种砝码 ...

  6. Codeforces Round #197 (Div. 2) : C

    哎....这次的比赛被安叔骂的好惨! 不行呢,要虐回来: 这道搜索,老是写错,蛋疼啊! 果然是基础没打好! #include<cstdio> using namespace std; ], ...

  7. Codeforces Round #197 (Div. 2) : D

    这题也是一个线段树的水题: 不过开始题目没看明白,害得我敲了一个好复杂的程序.蛋疼啊.... 最后十几分钟的时候突然领悟到了题意,但是还是漏掉一个细节,老是过不去... 以后比赛的时候不喝啤酒了,再也 ...

  8. Codeforces Round #197 (Div. 2) : B

    也是水题一个,不过稍微要细心点.... 贴代码: #include<iostream> using namespace std; long long n,m; ; int main() { ...

  9. Codeforces Round #197 (Div. 2) : A

    水题一个: 直接贴代码: #include<cstdio> #include<algorithm> #include<cstring> using namespac ...

随机推荐

  1. 转:ORACLEERP开发基础之EBS开发基础

    转自:http://blog.itpub.net/8781091/viewspace-1012244/ [内容导航] 第1页:开发工具安装 第2页:增加数据块 第3页:注册表单FORM 第4页:注册请 ...

  2. oracle EBS中使用PLSQL提交"关闭离散"并发请求

    declare l_request_id number; l_return_flag boolean; l_num_user_id number; l_num_resp_id number; l_nu ...

  3. 通过配置tomcat虚拟路径配置站点的静态资源

    我们常常站点中会提供给用户上传文件.图片.视频或者诸如为了提高性能生成的静态文件等存储在站点应用中.但如果静态资源文件和项目文件在同一个目录下,当我们重新部署文件时,war重新解压会导致静态资源文件的 ...

  4. 华为RH8100V3RAID 10配置

    a)华为RH8100V3RAID 10配置 1)开机按照提示按Ctrl+H键进入RAID卡WEBBIOS管理界面: 2)选中“Start”回车,进入RAID卡管理配置界面: 3)移动鼠标到 “conf ...

  5. Css3炫酷总结使用

    先从CSS3的选择器说起: E F:所有的子孙元素: E>F: E中的子元素: E+F:E元素之后的最近的选择器: E~F:E中所以后面兄弟元素(CSS3 不包括自己本身,前面也不包括) att ...

  6. hibernate篇章五--Hibernage工作原理

    Hibernage工作原理: 1.配置hibernate对象关系映射文件.启动服务器 2.服务器通过实例化Configuration对象,读取hibernate.cfg.xml文件的配置内容,并根据相 ...

  7. mysql嵌套查询

    select * from(select t.`name` `name`,count(*) count from company t group by t.`name`) aa where aa.co ...

  8. 一个fibonacci数列简单求和的问题

    前段时间老师在讲函数调用的时候,用Fibonacci数列来演示了一下,因为以前没怎么接触过Fibonacci,所以当时很懵. 当时让求的是Fibonacci数列中,第N位值为多少,当时老师写的是: 之 ...

  9. (一)问候Hibernate4

    第一节:Hibernate 简介 官网:http://hibernate.org/ Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC 进行了非常轻量级的对象封装,使得Java程序员 ...

  10. bzoj1260[CQOI2007]涂色paint

    思路:区间dp,用f[i][j]表示区间[i,j]的答案,然后转移即可. #include<iostream> #include<cstdio> #include<cst ...