ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C. AquaMoon and Strange Sort

2021-07-18 13:33:11  阅读:249  来源: 互联网

标签:Sort int ak cin long bk Strange AquaMoon define


C. AquaMoon and Strange Sort

思路 :

对于任意一个数\(a_i\), 它在原序列中出现在奇数位置的次数也一定等于在正确序列中出现在奇数位置的次数, 否则, 就一定会出现\(left\), 也就是相当于移动了奇数次. 同理, 在原序列中出现在偶数位置的次数也一定等于在正确序列中出现在偶数位置的次数.

#include <bits/stdc++.h>
using namespace std;
#define IO ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);
inline int lowbit(int x) { return x & (-x); }
#define ll long long
#define ull unsigned long long
#define pb push_back
#define PII pair<int, int>
#define VIT vector<int>
#define x first
#define y second
#define inf 0x3f3f3f3f
const int N = 1e5 + 7;
int a[N], b[N];
int ak[N][2], bk[N][2];

int main() {
    //freopen("in.txt", "r", stdin);
    IO;
    int T;
    cin >> T;
    while (T--) {
        int n;
        cin >> n;
        memset(ak, 0, sizeof ak);
        memset(bk, 0, sizeof bk);
        for (int i = 1; i <= n; ++i) {
            cin >> a[i];
            b[i] = a[i];
        }
        sort(b + 1, b + 1 + n);
        for (int i = 1; i <= n; ++i) 
            if (i % 2 != 0) {
                ak[a[i]][0]++;
                bk[b[i]][0]++;
            } else {
                ak[a[i]][1]++;
                bk[b[i]][1]++;
            }
        int f = 1;
        for (int i = 1; i <= n; ++i) 
            if (ak[a[i]][0] != bk[a[i]][0] || ak[a[i]][1] != bk[a[i]][1])
                f = 0;
        if (f) cout << "YES\n";
        else cout << "NO\n";
    } 
    return 0;
}

标签:Sort,int,ak,cin,long,bk,Strange,AquaMoon,define
来源: https://www.cnblogs.com/phr2000/p/15026373.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有