• CF986B Petr and Permutations 思维


    每次交换:逆序对的数量+1或者-1;

    假设最后逆序对数量为 sum;

    ①x+y=3n;

    ②x-y=sum;

    -> 3n+sum为偶数;

    所以 n 和 sum 必须奇偶一样;

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<map>
    #include<set>
    #include<vector>
    #include<queue>
    #include<bitset>
    #include<ctime>
    #include<deque>
    #include<stack>
    #include<functional>
    #include<sstream>
    //#include<cctype>
    //#pragma GCC optimize(2)
    using namespace std;
    #define maxn 1000005
    #define inf 0x7fffffff
    //#define INF 1e18
    #define rdint(x) scanf("%d",&x)
    #define rdllt(x) scanf("%lld",&x)
    #define rdult(x) scanf("%lu",&x)
    #define rdlf(x) scanf("%lf",&x)
    #define rdstr(x) scanf("%s",x)
    typedef long long  ll;
    typedef unsigned long long ull;
    typedef unsigned int U;
    #define ms(x) memset((x),0,sizeof(x))
    const long long int mod = 1e9 + 7;
    #define Mod 1000000000
    #define sq(x) (x)*(x)
    #define eps 1e-4
    typedef pair<int, int> pii;
    #define pi acos(-1.0)
    //const int N = 1005;
    #define REP(i,n) for(int i=0;i<(n);i++)
    typedef pair<int, int> pii;
    inline ll rd() {
        ll x = 0;
        char c = getchar();
        bool f = false;
        while (!isdigit(c)) {
            if (c == '-') f = true;
            c = getchar();
        }
        while (isdigit(c)) {
            x = (x << 1) + (x << 3) + (c ^ 48);
            c = getchar();
        }
        return f ? -x : x;
    }
    
    ll gcd(ll a, ll b) {
        return b == 0 ? a : gcd(b, a%b);
    }
    int sqr(int x) { return x * x; }
    
    
    /*ll ans;
    ll exgcd(ll a, ll b, ll &x, ll &y) {
        if (!b) {
            x = 1; y = 0; return a;
        }
        ans = exgcd(b, a%b, x, y);
        ll t = x; x = y; y = t - a / b * y;
        return ans;
    }
    */
    
    int n;
    int a[maxn];
    int b[maxn];
    int c[maxn];
    
    void add(int x) {
        while (x <= n) {
            c[x]++; x += x & -x;
        }
    }
    int query(int x) {
        int res = 0;
        while (x > 0) {
            res += c[x]; x -= x & -x;
        }
        return res;
    }
    int main() {
        //ios::sync_with_stdio(0);
        rdint(n);
        for (int i = 1; i <= n; i++) {
            rdint(a[i]); b[i] = a[i];
        }
        sort(b + 1, b + 1 + n);
        int ans = 0;
        for (int i = 1; i <= n; i++) {
            add(lower_bound(b + 1, b + 1 + n, a[i]) - b);
            ans += (i - query(lower_bound(b + 1, b + 1 + n, a[i] + 1) - b - 1));
        }
        if ((ans & 1) == (n & 1)) {
            cout << "Petr" << endl;
        }
        else cout << "Um_nik" << endl;
        return 0;
    }
    
    EPFL - Fighting
  • 相关阅读:
    3 Redis 的常用五大数据类型
    Oracle12C 基本操作和使用
    CentOS7安装VNC服务
    CentOS7.6 安装Oracle12C(下)
    CentOS7.6 安装Oracle12C(上)
    博主创建了一个AGV吧的Discuz,欢迎各位加入进来
    六、openTCS4.17汉化版源码包含通信DEMO,gitee地址见内容
    毕马威图形数独
    五、OpenTCS4.12的模拟运行
    四、通过Socket实现跟AGV小车通信(仅做Demo演示,跟实际工厂运行无关)
  • 原文地址:https://www.cnblogs.com/zxyqzy/p/10273657.html
Copyright © 2020-2023  润新知