题目链接

题意

  1. 现在从左到右有 n 个元素,现在我们是否可以通过进行任意次操作,使这个序列变成非递减?对于依次操作,我们可以选择两个相邻的元素交换位置,并且每个元素如果被交换就一定要交换偶数次(可以是 0 次)。

思路

  1. 其实这题只要我们看出来:奇数位置之间交换 与 偶数位置之间的两个数字进行交换位置,每个元素是一定都被交换了偶数次(作为中间交换元素的数字也一定被交换了偶数次),
  2. 而奇数与偶数位置交换那么交换的次数一定是奇数次,之后一定还要在和相邻的某个奇数位置进行交换,才能使每个元素都被交换偶数次,因此我们可以认为这种操作是不存在的。只有 1 中的两种交换情况。
  3. 这样的话我们只需要对奇数位置分离出来,进行排序,
  4. 然后在把剩余的偶数位置分离出来,进行排序,
  5. 最后把这个两个奇、偶数组合并成一个新的数组,并检查这个数组是否是非递减的,如果是输出 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(思维)相关推荐

  1. Codeforces Round #732 (Div. 2) C. AquaMoon and Strange Sort 思维

    传送门 文章目录 题意: 思路: 题意: 给你nnn个数,每个数初始方向是向右,每次可以交换相邻两个位置并且将这两个位置的方向调换,问这个序列的最终状态能否是非递减且方向都向右. n≤1e5,ai≤1 ...

  2. Strange Partition CodeForces - 1471A

    Strange Partition CodeForces - 1471A 题意: 对于数组b可以两两合并其中的相连元素,beauty值就是对于数组b中的b[i]除以k向上取整的和,求出beauty值的 ...

  3. Trouble Sort CodeForces - 1365B(思维)

    Ashish has n elements arranged in a line. These elements are represented by two integers ai - the va ...

  4. 【CodeForces - 340D】Bubble Sort Graph (思维,nlogn最长上升子序列类问题)

    题干: Iahub recently has learned Bubble Sort, an algorithm that is used to sort a permutation with n e ...

  5. CodeForces 798D 思维,贪心

    CodeForces 798D 题意:长度为 n的两个数组 a[]和 b[],要找出 k ( k<=n/2+1 )个下标,使得在两个数组中这 k个数的和乘上 2 要大于所有数的和. tags: ...

  6. 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 ...

  7. codeforces - 1315C - 思维题

    原题链接:https://codeforces.com/problemset/problem/1315/C 翻译: 这是一个猜谜游戏,你需要猜中一个序列,谜题是一个序列,我们设为b,长度为n.你需要根 ...

  8. Balanced Substring CodeForces - 873B (思维+前缀和)

    Balanced Substring CodeForces - 873B You are given a string s consisting only of characters 0 and 1. ...

  9. Codeforces 1093C (思维+贪心)

    题面 传送门 题目大意: 有一个长n(n为偶数)的序列a 已知a满足 \(a_1≤a_2≤⋯≤a_n\) 给出一个长度为\(\frac{n}{2}\) 的序列b,定义\(b_i=a_i+a_{n-i+ ...

最新文章

  1. python 加注拼音-一个将汉字转换成汉语拼音的python库的代码
  2. T400 安装Windows 7 7100 总结
  3. Tensorflow图像通道合并,IndexError: too many indices for array
  4. string 大小写转换
  5. linux 查看shell脚本执行了多长时间
  6. 安装windows和android双系统,安装Windows和Android双系统.doc
  7. flask中的session对象方法
  8. python 闯关之路二(模块的应用)
  9. 今天进行的将zzb从apache迁移到nginx
  10. WIN7,WIN10,WIN11怎么查看电脑操作系统位数
  11. 网络科学论坛纪要-2012
  12. 高登数学,线性代数问题的数值解(SciPy第三方库,近似解)
  13. 吴晓波罗振宇2019跨年演讲感想
  14. 鹏鹏seo第三课:长尾关键词的认识!
  15. Facebook想要成为下一个微信,难! 1
  16. “麒麟计划”落地苍南,赋能外贸企业数字化转型!
  17. 电子警察位置【收藏】
  18. 电容笔做的比较好的品牌有哪些?便宜好用的电容笔推荐
  19. 逆向刺激:文案撰写的反向逻辑
  20. ROS2机器人实验报告提示02➡沼泽⬅

热门文章

  1. 大连散客旅游网今日开通一站式服务升级滨城自助游
  2. 三星s20 android 10.0,同为骁龙865新旗舰,小米10对比三星S20,差距有多大
  3. 关于对大一上学期的学习总结及大一下学期的规划。
  4. Python+OpenCV教程5:颜色空间转换 追踪视频中特定颜色的物体 消除票据中的红色印章
  5. 【开源电机驱动】电机建模
  6. 一文看懂苹果秋季新品发布会:iPhone 13领衔C位产品齐了
  7. 文本检索系统-1:简介
  8. 破世界纪录了0.74秒!用Python实现自动扫雷!
  9. java调用海康威视sdk获取车牌号demo
  10. Django-模型类