uva 11925——Generating Permutations
题意:给定一个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相关推荐
- uva 10098 Generating Fast(全排列)
还是用的两种方法,递归和STL,递归那个是含有反复元素的全排列,这道题我 没有尝试没有反复元素的排列,由于从题目上并没有发现一定是有反复元素的() 贴代码: <span style=" ...
- 紫书《算法竞赛入门经典》
紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...
- ACM/ICPC 集:
ACM/ICPC在线题库集锦: 网址:http://acm.uva.es/ 简称: uva 全称: Valladolid Programming Contest Site 所在国:西班牙 提交方式:w ...
- π-Algorithmist分类题目(1)
原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(1) Sorting UVAL ...
- sicily题目分类
sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...
- [sicily]部分题目分类
sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...
- Sicily 题目分类
依照自己水平挑着做→ →~~ 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 ...
- 编程题目分类(剪辑)
1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...
- 一些有意思的算法代码[转载]
转载自:http://coolshell.cn/articles/6010.html Keith Schwarz是一个斯坦福大学计算机科学系的讲师.他对编程充满了热情.他的主页上他自己正在实现各种各样 ...
最新文章
- 廖雪峰python教程视频-为什么看不懂廖雪峰的Python学习教程?
- LUA 拾遗(编译-调试-运行)
- php根据设备判断访问,PHP判断设备访问来源
- python进程数上限_在多处理python中限制进程数
- Mesa 3D 计算机图形库
- Entity Framework Fluent API
- java jmf for mac 安装_Mac版-Jdk安装与环境配置
- kubernetes集群架构和组件
- 西门子S7-300 PLC视频教程(百度网盘)收集于网络-供参考学习
- 零成本学arduino教程——光敏电阻传感器
- kpi权重设置原则_绩效指标确定权重的原则
- 这家伙有点懒,还没有个性签名 :) --工具篇03
- 五大学科竞赛(一)介绍
- 鸿蒙支持手机型号,推出鸿蒙,放弃安卓?华为新机入网,鸿蒙首发机型确定!...
- 通过 ffmpeg 无损剪切与拼接视频方法
- php电视直播cms系统_在线网络电视直播内核完整PHP版 v3.0
- [转]计算机编程语言的入门学习
- [Unity实战]一个简单的unity手写摇杆[入门级][手写demo][开箱可用]
- python打印pdf文件_Python静默打印PDF到特定的打印机
- Android zxing,轻松实现二维码扫描、生成
热门文章
- 纯css隐藏移动端滚动条解决方案(ios上流畅滑动)
- 详细解读css中的浮动以及清除浮动的方法
- java.lang.Error: Unresolved compilation problems
- 关于Unity实现AR功能(五)摄像头转换与闪光灯开关控制
- 2 android学习资料
- MVC3学习 一 ViewBag和Html.Raw
- MyBatis ResultMap(2)
- 测试Rockey 4 Smart加密锁的C语言代码
- php yii2 获取表里最大的id_Yii2中自带分页类实现分页
- init tarray 太大_[NOIP 2001提高组T4]Car的旅行路线