昨天晚上巨困,就没有打,今天课间的时候就看了一下D题,发现好像可以瞎搞,于是吃完饭就写了一下,调过样例一次就A了qaq。

D. Sequence and Swaps

枚举+贪心
由于数据范围n≤500n\leq500n≤500,由此我们可以在n3n^3n3完成此题。

最后完成所有操作后,我们手中肯定还有一个数,我们考虑去枚举这个数。

最后手里的数一定不在最终的排列中,于是用一个数组b[]除了手中的数记录下来,不难发现只要排序一下这个所有数的位置确定了。

而且不难发现如果当前手中的数是xxx,我们必须一次将他归位,于是就模拟操作,每次找出现在手中的数在b[]数组中的位置(注意重复的数只需要开一个st[]数组记录一下即可),然后看看能不能执行交换操作,把过程模拟一边,顺便记录次数。

模拟过程中,如果当前手中的数已经是枚举剩余的数之间跳出循环,如果不能交换说明不合法也直接跳出循环。

最后再判断一下是否满足条件即可。

时间复杂度O(n3)O(n^3)O(n3)

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<random>
#include<bitset>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<unordered_set>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=510;
int a[N],b[N],c[N];
bool st[N];
int main()
{IO;int T=1;cin>>T;while(T--){int n,x;cin>>n>>x;for(int i=1;i<=n;i++) cin>>a[i];bool fl=1;for(int i=2;i<=n;i++)//特判最后手中的数是 x 也就是不用操作if(a[i]<a[i-1]) fl=0;if(fl) {cout<<0<<'\n';continue;}a[n+1]=x;int res=0x3f3f3f3f;for(int i=1;i<=n;i++)// 枚举剩下的数是a[i]{for(int j=1;j<=n;j++){if(i==j)b[j]=x;elseb[j]=a[j];}sort(b+1,b+1+n);int tmp=x;memcpy(c,a,sizeof c);bool ok=1;int cnt=0;for(int j=1;j<=n;j++){memset(st,0,sizeof st);int k;for(k=1;k<=n;k++)// 找到当前手中的数应该所在的位置{if(b[k]==tmp&&c[k]!=tmp){while(st[k]||c[k]==tmp) k++;st[k]=1;break;}}if(c[k]>tmp) // 能不能执行交换操作{swap(c[k],tmp);cnt++;if(tmp==a[i]) break;//手中的数已经是枚举的数}else// 交换失败{ok=0;break;}}for(int i=2;i<=n;i++)if(c[i]<c[i-1]) ok=0;if(a[i]!=tmp) ok=0;// 最后手中的数tmp一定要等于枚举的数a[i]if(ok) res=min(res,cnt);}if(res==0x3f3f3f3f) cout<<-1<<'\n';else cout<<res<<'\n';}return 0;
}

感觉应该有复杂度更优的做法,但是我这个做法若优化感觉十分难写~~

要加油哦~

codeforces1455 D. Sequence and Swaps相关推荐

  1. D. Sequence and Swaps

    D. Sequence and Swaps 解题思路:因为n的范围是500,可以枚举,将a[i]与x替换,对形成的b数组排序,判断a数组能否转化成b数组. #include<bits/stdc+ ...

  2. Sequence and Swaps

    DVI2-D 思考: 首先题目就是说给一个序列,然后一个x,如果va[i]>x,那么他俩就可以交换.现在就问最少多少次可以成为非严格上升序列,如果不可能就-1.刚开始会想换最小的?,找环,其实上 ...

  3. 1455 D. Sequence and Swaps(思维)

    LINK 考虑枚举以 i i i位置作为开头而 j j j位置作为结尾位置,可以得到最后排序后的数组 那么扫描所有 a k ! = b k a_k!=b_k ak​!=bk​的索引 k k k 如果此 ...

  4. 1455D. Sequence and Swaps(思维)

    传送门 因为不论怎么交换 x x x的值,只要进去换了,必定会有一个原数组 a a a内的元素出来 由于 n n n不大我们果断枚举那个出来的元素,然后把 x x x加入进去 那么对这个新的数组 b ...

  5. Educational Codeforces Round 37 (Rated for Div. 2)

    我的代码应该不会被hack,立个flag A. Water The Garden time limit per test 1 second memory limit per test 256 mega ...

  6. CodeForces 489A SwapSort (选择排序法)

    SwapSort 题目链接: http://acm.hust.edu.cn/vjudge/contest/121332#problem/A Description In this problem yo ...

  7. 920C. Swap Adjacent Elements

    You have an array a consisting of n integers. Each integer from 1 to n appears exactly once in this ...

  8. Swap Adjacent Elements CodeForces - 920C

    You have an array a consisting of n integers. Each integer from 1 to n appears exactly once in this ...

  9. Codeforces Round #277.5 (Div. 2) A,B,C,D,E,F题解

    转载请注明出处: http://www.cnblogs.com/fraud/           --by fraud A. SwapSort time limit per test    1 sec ...

最新文章

  1. 1、初识Server API for JavaScript
  2. 拓扑排序之变量序列代码
  3. 里氏替换原则→类型转换
  4. python存文件的模块_python模块之StringIO/cStringIO(内存文件)
  5. 在CentOS 6上搭建LNMP环境
  6. python 人脸关键点检测_opencv+python+dlib人脸关键点检测、实时检测
  7. 4.MySQL基础操作
  8. 连载13:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...
  9. C#算法设计排序篇之10-桶排序(附带动画演示程序)
  10. Guthrie QA-CAD2019(CAD绘图修订管理工具)A.04中文版
  11. Vivado时钟之间的三种关系
  12. 边拆边聊——简单了解DLP投影结构与成像原理
  13. python3的fft_Python fft.fft方法代码示例
  14. 什么是feature map
  15. linux镜像文件没有gho,【iso文件中没有gho文件】iso变gho_iso文件里没有gho-系统城...
  16. 电信网络性能质量测量
  17. 使用CAS框架快速实现单点登录
  18. 狼羊菜过河问题c语言算法,算法系列之十四:狼、羊、菜和农夫过河问题
  19. powerdesigner 16.5 关联mysql8.0
  20. Python 优化 回溯下降算法

热门文章

  1. android 弹窗有边框_Android 多种简单的弹出框样式设置代码
  2. 海德汉编程详细手册_UG编程海德汉系统螺旋铣孔最后一刀欠切解决方案
  3. mysql 精度_mysql-笔记 精度
  4. c语言实现灰度图像阈值分割,灰度图像--图像分割 阈值处理之平均阈值
  5. 手写一个简易bundler打包工具带你了解Webpack原理
  6. C++set容器-插入和删除
  7. Lambda表达式(多线程实现)
  8. 蓝桥杯 123 二分+打表
  9. Java BIO、NIO、AIO的区别
  10. hdu 1028 Ignatius and the Princess III 母函数入门