AquaMoon and Strange Sort CodeForces - 1546C(思维)
题目链接
题意
- 现在从左到右有 n 个元素,现在我们是否可以通过进行任意次操作,使这个序列变成非递减?对于依次操作,我们可以选择两个相邻的元素交换位置,并且每个元素如果被交换就一定要交换偶数次(可以是 0 次)。
思路
- 其实这题只要我们看出来:奇数位置之间交换 与 偶数位置之间的两个数字进行交换位置,每个元素是一定都被交换了偶数次(作为中间交换元素的数字也一定被交换了偶数次),
- 而奇数与偶数位置交换那么交换的次数一定是奇数次,之后一定还要在和相邻的某个奇数位置进行交换,才能使每个元素都被交换偶数次,因此我们可以认为这种操作是不存在的。只有 1 中的两种交换情况。
- 这样的话我们只需要对奇数位置分离出来,进行排序,
- 然后在把剩余的偶数位置分离出来,进行排序,
- 最后把这个两个奇、偶数组合并成一个新的数组,并检查这个数组是否是非递减的,如果是输出 yes
代码
#include <bits/stdc++.h>
using namespace std;
#define db double
#define ll long long
#define Pir pair<int, int>
#define fi first
#define se second
#define pb push_back
#define m_p make_pair
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
/*==========ACMer===========*/
const int N = 2e5 + 10;
int a[N];
vector<Pir> p, q;int main()
{int T; scanf("%d", &T);while (T --){q.clear();p.clear();int n; scanf("%d", &n);for (int i = 1; i <= n; i ++){scanf("%d", &a[i]);if (i % 2)p.pb(m_p(a[i], i)); elseq.pb(m_p(a[i], i));}sort(p.begin(), p.end());sort(q.begin(), q.end());for (int i = 0; i < p.size(); i ++){a[(i + 1) * 2 - 1] = p[i].fi;}for (int i = 0; i < q.size(); i ++){a[(i + 1) * 2] = q[i].fi;}int last = -1;int flag = 1;for (int i = 1; i <= n; i ++){if (a[i] < last){flag = 0;break;}elselast = a[i];}if (flag)printf("YES\n");elseprintf("NO\n");}return 0;
}
AquaMoon and Strange Sort CodeForces - 1546C(思维)相关推荐
- Codeforces Round #732 (Div. 2) C. AquaMoon and Strange Sort 思维
传送门 文章目录 题意: 思路: 题意: 给你nnn个数,每个数初始方向是向右,每次可以交换相邻两个位置并且将这两个位置的方向调换,问这个序列的最终状态能否是非递减且方向都向右. n≤1e5,ai≤1 ...
- Strange Partition CodeForces - 1471A
Strange Partition CodeForces - 1471A 题意: 对于数组b可以两两合并其中的相连元素,beauty值就是对于数组b中的b[i]除以k向上取整的和,求出beauty值的 ...
- Trouble Sort CodeForces - 1365B(思维)
Ashish has n elements arranged in a line. These elements are represented by two integers ai - the va ...
- 【CodeForces - 340D】Bubble Sort Graph (思维,nlogn最长上升子序列类问题)
题干: Iahub recently has learned Bubble Sort, an algorithm that is used to sort a permutation with n e ...
- CodeForces 798D 思维,贪心
CodeForces 798D 题意:长度为 n的两个数组 a[]和 b[],要找出 k ( k<=n/2+1 )个下标,使得在两个数组中这 k个数的和乘上 2 要大于所有数的和. tags: ...
- B. Trouble Sort Codeforces Round #648 (Div. 2)
B. Trouble Sort Ashish has n elements arranged in a line. These elements are represented by two inte ...
- codeforces - 1315C - 思维题
原题链接:https://codeforces.com/problemset/problem/1315/C 翻译: 这是一个猜谜游戏,你需要猜中一个序列,谜题是一个序列,我们设为b,长度为n.你需要根 ...
- Balanced Substring CodeForces - 873B (思维+前缀和)
Balanced Substring CodeForces - 873B You are given a string s consisting only of characters 0 and 1. ...
- Codeforces 1093C (思维+贪心)
题面 传送门 题目大意: 有一个长n(n为偶数)的序列a 已知a满足 \(a_1≤a_2≤⋯≤a_n\) 给出一个长度为\(\frac{n}{2}\) 的序列b,定义\(b_i=a_i+a_{n-i+ ...
最新文章
- python 加注拼音-一个将汉字转换成汉语拼音的python库的代码
- T400 安装Windows 7 7100 总结
- Tensorflow图像通道合并,IndexError: too many indices for array
- string 大小写转换
- linux 查看shell脚本执行了多长时间
- 安装windows和android双系统,安装Windows和Android双系统.doc
- flask中的session对象方法
- python 闯关之路二(模块的应用)
- 今天进行的将zzb从apache迁移到nginx
- WIN7,WIN10,WIN11怎么查看电脑操作系统位数
- 网络科学论坛纪要-2012
- 高登数学,线性代数问题的数值解(SciPy第三方库,近似解)
- 吴晓波罗振宇2019跨年演讲感想
- 鹏鹏seo第三课:长尾关键词的认识!
- Facebook想要成为下一个微信,难! 1
- “麒麟计划”落地苍南,赋能外贸企业数字化转型!
- 电子警察位置【收藏】
- 电容笔做的比较好的品牌有哪些?便宜好用的电容笔推荐
- 逆向刺激:文案撰写的反向逻辑
- ROS2机器人实验报告提示02➡沼泽⬅