问题 C: 序列交换
问题 C: 序列交换
时间限制: 1 Sec 内存限制: 128 MB
提交: 914 解决: 48
[提交] [状态] [命题人:jsu_admin]
题目描述
给一个 1 到 n 的排列,每次可以交换相邻两个数,问使用最少操作次数使得序列递增的方案是否唯一。
输入
输出
样例输入 Copy
1
1
2
2 1
3
3 2 1
样例输出 Copy
Yes
Yes
No
比赛时数据出弱了,赛后加强了一下
为了使操作次数最少,每次都会交换相邻的逆序对。如果某时刻同时出现两个相邻逆 序对,方案数就不唯一了。不难发现,这个过程只能是把一个数不断向右挪到它最后 在
的位置上。这意味着最长上升子序列长度 ≥ n − 1。
#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
//#define DEBUG
using namespace std;
typedef long long ll;
//typedef __int128 lll;
const int N=+;
const int MOD=1e9+;
const double PI = acos(-1.0);
const double EXP = 1E-;
const int INF = 0x3f3f3f3f;
int t,n,m,k,q;
int a[N];
int b[N];
int main()
{ while(~scanf("%d",&n)){
t=;
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
b[i]=a[i];
if(i!=&&a[i]<a[i-]){
t++;
}
}
if(t==||t==){
if(t==){
for(int i=;i<=n;i++){
if(a[i]<a[i-]){
swap(a[i],a[i-]);
//break;
}
}
for(int i=;i<=n;i++){
if(a[i]<a[i-]){
t=;
break;
}
}
q=;
for(int i=n;i>=;i--){
if(b[i]<b[i-]){
swap(b[i],b[i-]);
//break;
}
}
for(int i=;i<=n;i++){
if(b[i]<b[i-]){
q=;
break;
}
}
if(t||q){
cout << "Yes" << endl;
}else{
cout << "No" << endl;
}
}else{
cout << "Yes" << endl;
}
}else{
cout << "No" << endl;
}
} return ;
}
问题 C: 序列交换的更多相关文章
- [HNOI2009]双递增序列(动态规划,序列dp)
感觉这个题还蛮难想的. 首先状态特别难想.设\(dp[i][j]\)表示前i个数,2序列的长度为j的情况下,2序列的最后一个数的最小值. 其中1序列为上一个数所在的序列,2序列为另外一个序列. 这样设 ...
- Recover Binary Search Tree
Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...
- Modbus Poll master-slave测试 Dtech USB转485(worldsing 笔记)
1,简介 网站地址:http://www.modbustools.com/ 该网站提供了几个软件工具,可以运行于windows 2000/XP/Vista/7环境下,用来测试和仿真Modebus设备. ...
- LeetCode: Recover Binary Search Tree 解题报告
Recover Binary Search Tree Two elements of a binary search tree (BST) are swapped by mistake. Recove ...
- modbus调试工具
1,简介 网站地址:http://www.modbustools.com/ 该网站提供了几个软件工具,可以运行于windows 2000/XP/Vista/7环境下,用来测试和仿真Modebus设备. ...
- UVA-1611 Crane (构造)
题目大意:给一个1~n的序列,每次操作可以把长度为偶数的序列交换前一半和后一半的位置.求出将这个序列变成升序的步骤. 题目分析:构造求解. 代码如下: # include<iostream> ...
- 【逆序对相关/数学】【P1966】【NOIP2013D1T2】 火柴排队
传送门 Description 涵涵有两盒火柴,每盒装有 $n$ 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为:$ \sum ...
- Python全栈工程师(每周总结:2)
ParisGabriel 感谢 大家的支持 每天坚持 一天一篇 点个订 ...
- Python全栈工程师(函数嵌套、变量作用域)
ParisGabriel 感谢 大家的支持 每天坚持 一天一篇 点个订阅 ...
随机推荐
- python-类对象的比较
#类对象的比较 class Person: def __init__(self,age,height): self.age=age self.height=height def __eq__(self ...
- 【NOIP2015模拟11.3】备用钥匙
题目 你知道Just Odd Inventions社吗?这个公司的业务是"只不过是奇妙的发明(Just Odd Inventions)".这里简称为JOI社. JOI社有N名员工, ...
- 【leetcode】K-th Symbol in Grammar
题目如下: 解题思路:直接把每行的数据计算出来肯定是不行的,因为N最大是30,那个第N行长度就是2^30次方,这显然不可取.那么就只能找规律了,我采取的是倒推法.例如假如我们要求出第四行第七个元素的值 ...
- setData 机制
解释:setData 函数,用于将数据,从逻辑层发送到视图层,当开发者调用 setData 后,数据的变化,会引起视图层的更新.参数说明 属性 类型 是否必填 描述 data Object 是 这次要 ...
- Web防止button按钮点击多次
BtnPass.Attributes.Add("onclick", "javascript:if(document.getElementById('IsSubmited' ...
- jquery ajax实现文件上传
test5.html <html> <head> <meta http-equiv="Content-Type" content="text ...
- JSP Cookies处理
JSP Cookies处理 Cookies是存储在客户机的文本文件,它们保存了大量轨迹信息.在servlet技术基础上,JSP显然能够提供对HTTP cookies的支持. 通常有三个步骤来识别回头客 ...
- 2018 CCPC 秦皇岛 I (状压DP)
题意: 首先t组数据 (t<=5),一个n代表有n件东西,每个东西可以代表两个物品,商品或者袋子,每个都有个值,如果这个要代表袋子的话,当前就代表是容量,而且必须把其他几件不是袋子的物品放一些 ...
- ijkplayer阅读笔记系列<转>
http://blog.csdn.net/peckjerry/article/details/47663275
- 消息队列之 ActiveMQ
简介 ActiveMQ 特点 ActiveMQ 是由 Apache 出品的一款开源消息中间件,旨在为应用程序提供高效.可扩展.稳定.安全的企业级消息通信. 它的设计目标是提供标准的.面向消息的.多语言 ...