1455D. Sequence and Swaps(思维)
传送门
因为不论怎么交换 x x x的值,只要进去换了,必定会有一个原数组 a a a内的元素出来
由于 n n n不大我们果断枚举那个出来的元素,然后把 x x x加入进去
那么对这个新的数组 b b b排序
现在的任务就是如果把 a a a数组变成 b b b
然后注意到 x x x的交换条件是 a i > x a_i>x ai>x
所以必然是从前往后判断,若 a i = = b i a_i==b_i ai==bi忽略就行
若 a i ! = b i a_i!=b_i ai!=bi必定要交换 x x x和 a i a_i ai
此时需要满足 a i > x a_i>x ai>x且 x > = a i − 1 x>=a_{i-1} x>=ai−1
因为需要满足递增而且能交换
这样就很简单了
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5+10;
int n,m,a[maxn],x,b[maxn],k;
int main()
{int t; cin >> t;while( t-- ){cin >> n >> k;int ans = 1e9,ok=1;for(int i=1;i<=n;i++){cin >> a[i];if( a[i]<a[i-1] ) ok=0;}if( ok ){ cout << 0 << endl; continue; }for(int i=1;i<=n;i++){b[i]=k;for(int j=1;j<=n;j++)if( j!=i ) b[j]=a[j];sort( b+1,b+1+n );//最终的序列int temp = 0,now = k,flag=1;for(int j=1;j<=n;j++) {if( a[j]==b[j] ) continue;else//不相等要交换 {if( a[j]<=now ) flag=0;//要交换却反而不能交换 else//可以交换啊{temp++;if( b[j-1]>now ) flag = 0;//需要保证交换后是大于之前的数字的 now = a[j]; }}if( flag == 0 ) break; }if( flag ) ans = min( ans,temp );}if( ans==1e9 ) ans=-1;cout << ans << endl;}
}
1455D. Sequence and Swaps(思维)相关推荐
- 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 如果此 ...
- codeforces1455 D. Sequence and Swaps
昨天晚上巨困,就没有打,今天课间的时候就看了一下D题,发现好像可以瞎搞,于是吃完饭就写了一下,调过样例一次就A了qaq. D. Sequence and Swaps 枚举+贪心 由于数据范围n≤500 ...
- D. Sequence and Swaps
D. Sequence and Swaps 解题思路:因为n的范围是500,可以枚举,将a[i]与x替换,对形成的b数组排序,判断a数组能否转化成b数组. #include<bits/stdc+ ...
- Codeforces Round #743 (Div. 2) B. Swaps 思维
题目地址Codeforces Round #743 (Div. 2) B. Swaps 题意很好懂,这里就不复述了. 思路:因为是要让a小于b,所以可以用双指针,在b数组中找到第一个大于a数组中第i个 ...
- CodeForces - 1265D Beautiful Sequence(贪心+构造+思维)
题目链接:点击查看 题目大意:给出a个0,b个1,c个2,d个3,要求构造一种序列,使得数列两两之间绝对值之差等于1,若不能构造输出NO 题目分析:首先我们需要稍微讨论一下特殊情况,那就是对于两端的数 ...
- AT2005-[AGC003E]Sequential operations on Sequence【差分,思维】
正题 题目链接:https://www.luogu.com.cn/problem/AT2005 题目大意 开始有一个1∼n1\sim n1∼n依次排列的序列,然后QQQ次,第iii次把序列长度变为ai ...
- Sequence and Swaps
DVI2-D 思考: 首先题目就是说给一个序列,然后一个x,如果va[i]>x,那么他俩就可以交换.现在就问最少多少次可以成为非严格上升序列,如果不可能就-1.刚开始会想换最小的?,找环,其实上 ...
- 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 ...
- matlab兔子繁殖问题,斐波那契数列在《疯狂动物城》兔子繁衍中的应用
摘 要: 计算思维的构建有助于帮助学生将实际问题转换为透明易懂的框架算法, 并借助计算机解决.以电影<疯狂动物城>中的兔子繁殖问题为例, 引出斐波那契数列, 引导学生将数学表达式转化 ...
最新文章
- java培训机构如何选择适合自己的
- 祝贺黑龙江馆正式入驻波特城暨龙商龙企龙品走向全球化启动仪式圆满成功
- NanoHttpd源码分析
- 连接数据库是显示无法连接到服务器,如何解决出现无法与数据库服务器建立连接的方法...
- 在asp.net中调用process.start执行程序
- Qt笔记-Linux程序打印带颜色的字符串
- Deploy过程出错解决
- LeetCode(700)——二叉搜索树中的搜索(JavaScript)
- OpenCV精进之路(四):图像处理——图片的缩放和图像金字塔
- 在线编辑器FreeTextBox的使用
- HTML前端代码分析(查看网站黑链的几种方法)暗链是什么意思
- 【ES】MySQL语法版的ES来了,搜索引擎可以如此简单
- java并发圣经,差距不止一星半点!Github星标85K的性能优化法则圣经
- MySQL图形化性能监控工具MySQLMTOP详解
- macos复制粘贴快捷键 快速_苹果MAC系统复制粘贴快捷键是什么?
- 语音合成 g2p 字典设计
- 如何将Excel文件转换WPS格式?
- 在ipad上播放flash大集合
- RSD处理高分5号高光谱(GF5 AHSI)数据(四)——从地物光谱搜索高光谱数据集
- <<视觉问答>>2021:Check It Again: Progressive Visual Question Answering via Visual Entailment