• LibreOJ β Round #4


    A游戏

    内存限制:256 MiB时间限制:1000 ms标准输入输出
    题目类型:传统评测方式:文本比较
    上传者: qmqmqm

    题目描述

    qmqmqm和sublinekelzrip要进行一场游戏,其规则是这样的:

    首先有一个序列,其中每个位置是一个整数或是X。双方轮流将X的位置填入此前不在序列中的实数,直到序列中充满数字为止。qmqmqm优先填数。若最后这个序列的逆序对数目为奇数,则qmqmqm获得胜利,否则sublinekelzrip获得胜利。qmqmqm想知道若双方均采取最优决策,在一个给定的序列下他能否获胜。设最终序列中第iii个数为aia_iai​​,则逆序对为满足i<ji<ji<j且ai>aja_i>a_jai​​>aj​​的有序对(i,j)(i,j)(i,j)的数目

    注意虽然起始序列中只有整数,但可以填入非整数的实数。

    输入格式

    第一行包含一个正整数nnn,表示序列的长度。

    之后nnn行,每行或为一个整数aia_iai​​,或为一个字符X。

    输出格式

    输出仅包含一个字符,若qmqmqm获胜,输出W,否则输出L

    样例

    样例输入1

    2
    X
    X

    样例输出1

    L

    样例解释1

    若qmqmqm在第一个位置填入aaa,则sublinekelzrip只要在后一个位置填入a+1a+1a+1。

    若qmqmqm在第二个位置填入bbb,则sublinekelzrip只要在后一个位置填入b−1b-1b1。

    样例输入2

    2
    X
    57

    样例输出2

    W

    样例解释2

    qmqmqm在第一个位置填入717171即可获胜。

    数据范围与提示

    1≤n≤1000001 leq n leq 1000001n100000

    −109≤ai≤109-10^9 leq a_i leq 10^9109​​ai​​109​​

    i≠ji eq jij,则ai≠aja_i eq a_jai​​aj​​

    这个题还是比较复杂的,得先分析X的作用,最后发现是X的个数为奇数偶数的问题。

    然后在分析逆序对,注意有种情况是1 X

    这个题我本来的树状数组模板不好,打算再更新下

    #include <stdio.h>
    #include <bits/stdc++.h>
    using namespace std;
    const int N=100005;
    int w[N];
    int la(int l,int r)
    {
        if(r-l==1)
            return 0;
        int m=l+r>>1,s=la(l,m)+la(m,r);
        for(int i=l; i<m; ++i)
            s+=lower_bound(w+m,w+r,w[i])-w-m;
        sort(w+l,w+r);
        return s&1;
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        int t=0;
        for(int i=0; i<n; i++)
        {
            getchar();
            char c[15];
            scanf("%s",c);
            if(c[0]=='X')t++;
            else
            {
                sscanf(c,"%d",&w[i]);
            }
        }
        if(t)
        {
            if(n==1&&t==1||t%2==0)
                cout<<"L"<<endl;
            else cout<<"W"<<endl;
        }
        else
        {
            if(la(0,n))
                cout<<"W"<<endl;
            else cout<<"L"<<endl;
        }
        return 0;
    }
  • 相关阅读:
    Python简单的闹钟程序(Win)+开机自启
    (未完待续)学习机器学习必备的线性代数知识
    条件随机场 0 | 随机过程的概念及其统计特征
    Python-OpenCV学习(五):二维绘图
    Python-OpenCV学习(四):基本图像处理
    Python-OpenCV学习(二):OpenCV+python在windows上的安装
    CF 158A
    CF 84 div1 A
    CF 153 div1 A
    CF 171B
  • 原文地址:https://www.cnblogs.com/BobHuang/p/7472199.html
Copyright © 2020-2023  润新知