题意:给定一个1-n的排列,用不超过2*n2的操作把他变成升序。每次操作只有两种,一种是交换前两个元素,另外一种是把最后一个元素放到最后一位。

思路:贪心。用双端队列来保存数据,每次当v[0]>v[1]&&v[0]!=n时用交换前两个的策略把当前排好,否则就放后面等待被排。

code:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;const int INF=0x3fffffff;
const int inf=-INF;
const int N=180005;
const int M=2005;
const int mod=1000000007;
const double pi=acos(-1.0);#define cls(x,c) memset(x,c,sizeof(x))
#define cpy(x,a) memcpy(x,a,sizeof(a))
#define fr(i,s,n) for (int i=s;i<=n;i++)
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define lrt  rt<<1
#define rrt  rt<<1|1
#define middle int m=(r+l)>>1
#define lowbit(x) (x&-x)
#define pii pair<int,int>
#define mk make_pair
#define IN freopen("in.txt","r",stdin);
#define OUT freopen("out.txt","w",stdout);deque<int>v;
int s[N],len;int check()
{fr (i,1,v.size()-1)if (v[i]<v[i-1]) return 0;return 1;
}
int main()
{int T,n,x;//scanf("%d",&T);while (~scanf("%d",&n)&&n){v.clear();len=0;fr (i,1,n) scanf("%d",&x),v.push_back(x);while (!check()){if (v[0]>v[1]&&v[0]!=n){swap(v[0],v[1]);s[len++]=1;//s='1'+s;//cout<<"bug1"<<endl;}else{int t=v.back();v.pop_back();//cout<<t<<endl;v.push_front(t);s[len++]=2;//s='2'+s;}}for (int i=len-1;i>=0;i--) printf("%d",s[i]);puts("");//cout<<s<<endl;}
}

uva 11925——Generating Permutations相关推荐

  1. uva 10098 Generating Fast(全排列)

    还是用的两种方法,递归和STL,递归那个是含有反复元素的全排列,这道题我 没有尝试没有反复元素的排列,由于从题目上并没有发现一定是有反复元素的() 贴代码: <span style=" ...

  2. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  3. ACM/ICPC 集:

    ACM/ICPC在线题库集锦: 网址:http://acm.uva.es/ 简称: uva 全称: Valladolid Programming Contest Site 所在国:西班牙 提交方式:w ...

  4. π-Algorithmist分类题目(1)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(1) Sorting UVAL ...

  5. sicily题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  6. [sicily]部分题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  7. Sicily 题目分类

    依照自己水平挑着做→ →~~ 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 ...

  8. 编程题目分类(剪辑)

    1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...

  9. 一些有意思的算法代码[转载]

    转载自:http://coolshell.cn/articles/6010.html Keith Schwarz是一个斯坦福大学计算机科学系的讲师.他对编程充满了热情.他的主页上他自己正在实现各种各样 ...

最新文章

  1. 廖雪峰python教程视频-为什么看不懂廖雪峰的Python学习教程?
  2. LUA 拾遗(编译-调试-运行)
  3. php根据设备判断访问,PHP判断设备访问来源
  4. python进程数上限_在多处理python中限制进程数
  5. Mesa 3D 计算机图形库
  6. Entity Framework Fluent API
  7. java jmf for mac 安装_Mac版-Jdk安装与环境配置
  8. kubernetes集群架构和组件
  9. 西门子S7-300 PLC视频教程(百度网盘)收集于网络-供参考学习
  10. 零成本学arduino教程——光敏电阻传感器
  11. kpi权重设置原则_绩效指标确定权重的原则
  12. 这家伙有点懒,还没有个性签名 :) --工具篇03
  13. 五大学科竞赛(一)介绍
  14. 鸿蒙支持手机型号,推出鸿蒙,放弃安卓?华为新机入网,鸿蒙首发机型确定!...
  15. 通过 ffmpeg 无损剪切与拼接视频方法
  16. php电视直播cms系统_在线网络电视直播内核完整PHP版 v3.0
  17. [转]计算机编程语言的入门学习
  18. [Unity实战]一个简单的unity手写摇杆[入门级][手写demo][开箱可用]
  19. python打印pdf文件_Python静默打印PDF到特定的打印机
  20. Android zxing,轻松实现二维码扫描、生成

热门文章

  1. 纯css隐藏移动端滚动条解决方案(ios上流畅滑动)
  2. 详细解读css中的浮动以及清除浮动的方法
  3. java.lang.Error: Unresolved compilation problems
  4. 关于Unity实现AR功能(五)摄像头转换与闪光灯开关控制
  5. 2 android学习资料
  6. MVC3学习 一 ViewBag和Html.Raw
  7. MyBatis ResultMap(2)
  8. 测试Rockey 4 Smart加密锁的C语言代码
  9. php yii2 获取表里最大的id_Yii2中自带分页类实现分页
  10. init tarray 太大_[NOIP 2001提高组T4]Car的旅行路线