A游戏

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

题目描述

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

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

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

输入格式

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

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

输出格式

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

样例

样例输入1

  1. 2
  2. X
  3. X

样例输出1

  1. L

样例解释1

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

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

样例输入2

  1. 2
  2. X
  3. 57

样例输出2

  1. W

样例解释2

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

数据范围与提示

1≤n≤1000001 \leq n \leq 1000001≤n≤100000

−109≤ai≤109-10^9 \leq a_i \leq 10^9−10​9​​≤a​i​​≤10​9​​

若i≠ji \neq ji≠j,则ai≠aja_i \neq a_ja​i​​≠a​j​​

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

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

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

  1. #include <stdio.h>
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. const int N=;
  5. int w[N];
  6. int la(int l,int r)
  7. {
  8. if(r-l==)
  9. return ;
  10. int m=l+r>>,s=la(l,m)+la(m,r);
  11. for(int i=l; i<m; ++i)
  12. s+=lower_bound(w+m,w+r,w[i])-w-m;
  13. sort(w+l,w+r);
  14. return s&;
  15. }
  16. int main()
  17. {
  18. int n;
  19. scanf("%d",&n);
  20. int t=;
  21. for(int i=; i<n; i++)
  22. {
  23. getchar();
  24. char c[];
  25. scanf("%s",c);
  26. if(c[]=='X')t++;
  27. else
  28. {
  29. sscanf(c,"%d",&w[i]);
  30. }
  31. }
  32. if(t)
  33. {
  34. if(n==&&t==||t%==)
  35. cout<<"L"<<endl;
  36. else cout<<"W"<<endl;
  37. }
  38. else
  39. {
  40. if(la(,n))
  41. cout<<"W"<<endl;
  42. else cout<<"L"<<endl;
  43. }
  44. return ;
  45. }

LibreOJ β Round #4的更多相关文章

  1. LibreOJ β Round #2 题解

    LibreOJ β Round #2 题解 模拟只会猜题意 题目: 给定一个长为 \(n\) 的序列,有 \(m\) 次询问,每次问所有长度大于 \(x\) 的区间的元素和的最大值. \(1 \leq ...

  2. loj #547. 「LibreOJ β Round #7」匹配字符串

    #547. 「LibreOJ β Round #7」匹配字符串   题目描述 对于一个 01 串(即由字符 0 和 1 组成的字符串)sss,我们称 sss 合法,当且仅当串 sss 的任意一个长度为 ...

  3. [LOJ#531]「LibreOJ β Round #5」游戏

    [LOJ#531]「LibreOJ β Round #5」游戏 试题描述 LCR 三分钟就解决了问题,她自信地输入了结果-- > -- 正在检查程序 -- > -- 检查通过,正在评估智商 ...

  4. [LOJ#530]「LibreOJ β Round #5」最小倍数

    [LOJ#530]「LibreOJ β Round #5」最小倍数 试题描述 第二天,LCR 终于启动了备份存储器,准备上传数据时,却没有找到熟悉的文件资源,取而代之的是而屏幕上显示的一段话: 您的文 ...

  5. [LOJ#516]「LibreOJ β Round #2」DP 一般看规律

    [LOJ#516]「LibreOJ β Round #2」DP 一般看规律 试题描述 给定一个长度为 \(n\) 的序列 \(a\),一共有 \(m\) 个操作. 每次操作的内容为:给定 \(x,y\ ...

  6. [LOJ#515]「LibreOJ β Round #2」贪心只能过样例

    [LOJ#515]「LibreOJ β Round #2」贪心只能过样例 试题描述 一共有 \(n\) 个数,第 \(i\) 个数 \(x_i\) 可以取 \([a_i , b_i]\) 中任意值. ...

  7. [LOJ#525]「LibreOJ β Round #4」多项式

    [LOJ#525]「LibreOJ β Round #4」多项式 试题描述 给定一个正整数 k,你需要寻找一个系数均为 0 到 k−1 之间的非零多项式 f(x),满足对于任意整数 x 均有 f(x) ...

  8. [LOJ#526]「LibreOJ β Round #4」子集

    [LOJ#526]「LibreOJ β Round #4」子集 试题描述 qmqmqm有一个长为 n 的数列 a1,a2,……,an,你需要选择集合{1,2,……,n}的一个子集,使得这个子集中任意两 ...

  9. [LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机)

    [LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机) 试题描述 IOI 的比赛开始了.Jsp 和 Rlc 坐在一个角落,这时他们听到了一个异样的声音 …… 接着他们发现自己收 ...

  10. LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力

    二次联通门 : LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力 /* LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力 叫做计算几 ...

随机推荐

  1. 如何在cmd查看文件内容的md5值

    在cmd下进入 要查看的文件目录 默认目录是c,切换到其他盘符例如: C:\D: 就会切换到D盘 D:\ 然后输入命令 certutil -hashfile  文件名称.文件类型 MD5 如 cert ...

  2. python os,sys模块的使用

    首先,os模块是用来与操作系统进行交互的模块,可以对操作系统上的一些东西进行操作 而sys是用来对解释器进行一些操作的 一.os os.getcwd() 获取当前工作目录,即当前python脚本工作的 ...

  3. Literals

    Uppercase or lowercase L means long (however, using a lowercase l is confusing because it can look l ...

  4. 在广州学习PHP零基础可以学习吗?

    PHP现今作为互联网运用很广泛的编程语言,市场需求量也越来越高,而PHP开发工程师的薪资也是一路水涨船高,更多的人看到了PHP的发展前景,纷纷都想投入到PHP的开发大军中来,那么对于很多转行或者零基础 ...

  5. 重温Javascript(二)-对象

    对象 可以想象成散列表,键值对,值可以是数据或函数 创建对象的方式 1.工厂模式 function createPerson(name, age, job){ var o = new Object() ...

  6. 关于vcpkg的一些技术细节

    1.如果你启用了vcpkg integrate install,将默认采用vcpkg里安装的源而不是nuget中的 2.一般而言xxx-uwp不能用xxx-windows代替,否则回捣乱其它包 3.卸 ...

  7. Vue中使用computed与watch结合实现数据变化监听

    目的:当数据变化时,为其中重要数据增加边框,实现闪烁以达到提醒目的.数据格式如下,只有在未处理火警/故障时增加闪烁边框.可以使用watch进行深度监听.数据格式已定,也非常明确要监听的数据是有两个.既 ...

  8. 字符编码:BSTR

    typedef wchar_t WCHAR; typedef WCHAR OLECHAR; typedef OLECHAR __RPC_FAR *BSTR;;

  9. modelformset

    class StudyRecordDeialView(View): def get(self, request, class_record_id): class_record_obj = models ...

  10. 洛谷P3372线段树1

    难以平复鸡冻的心情,虽然可能在大佬眼里这是水题,但对蒟蒻的我来说这是个巨大的突破(谢谢我最亲爱的lp陪我写完,给我力量).网上关于线段树的题解都很玄学,包括李煜东的<算法竞赛进阶指南>中的 ...