LibreOJ β Round #4
A游戏
题目描述
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-1b−1。
样例输入2
2
X
57
样例输出2
W
样例解释2
qmqmqm在第一个位置填入717171即可获胜。
数据范围与提示
1≤n≤1000001 \leq n \leq 1000001≤n≤100000
−109≤ai≤109-10^9 \leq a_i \leq 10^9−109≤ai≤109
若i≠ji \neq ji≠j,则ai≠aja_i \neq a_jai≠aj
这个题还是比较复杂的,得先分析X的作用,最后发现是X的个数为奇数偶数的问题。
然后在分析逆序对,注意有种情况是1 X
这个题我本来的树状数组模板不好,打算再更新下
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
const int N=;
int w[N];
int la(int l,int r)
{
if(r-l==)
return ;
int m=l+r>>,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&;
}
int main()
{
int n;
scanf("%d",&n);
int t=;
for(int i=; i<n; i++)
{
getchar();
char c[];
scanf("%s",c);
if(c[]=='X')t++;
else
{
sscanf(c,"%d",&w[i]);
}
}
if(t)
{
if(n==&&t==||t%==)
cout<<"L"<<endl;
else cout<<"W"<<endl;
}
else
{
if(la(,n))
cout<<"W"<<endl;
else cout<<"L"<<endl;
}
return ;
}
LibreOJ β Round #4的更多相关文章
- LibreOJ β Round #2 题解
LibreOJ β Round #2 题解 模拟只会猜题意 题目: 给定一个长为 \(n\) 的序列,有 \(m\) 次询问,每次问所有长度大于 \(x\) 的区间的元素和的最大值. \(1 \leq ...
- loj #547. 「LibreOJ β Round #7」匹配字符串
#547. 「LibreOJ β Round #7」匹配字符串 题目描述 对于一个 01 串(即由字符 0 和 1 组成的字符串)sss,我们称 sss 合法,当且仅当串 sss 的任意一个长度为 ...
- [LOJ#531]「LibreOJ β Round #5」游戏
[LOJ#531]「LibreOJ β Round #5」游戏 试题描述 LCR 三分钟就解决了问题,她自信地输入了结果-- > -- 正在检查程序 -- > -- 检查通过,正在评估智商 ...
- [LOJ#530]「LibreOJ β Round #5」最小倍数
[LOJ#530]「LibreOJ β Round #5」最小倍数 试题描述 第二天,LCR 终于启动了备份存储器,准备上传数据时,却没有找到熟悉的文件资源,取而代之的是而屏幕上显示的一段话: 您的文 ...
- [LOJ#516]「LibreOJ β Round #2」DP 一般看规律
[LOJ#516]「LibreOJ β Round #2」DP 一般看规律 试题描述 给定一个长度为 \(n\) 的序列 \(a\),一共有 \(m\) 个操作. 每次操作的内容为:给定 \(x,y\ ...
- [LOJ#515]「LibreOJ β Round #2」贪心只能过样例
[LOJ#515]「LibreOJ β Round #2」贪心只能过样例 试题描述 一共有 \(n\) 个数,第 \(i\) 个数 \(x_i\) 可以取 \([a_i , b_i]\) 中任意值. ...
- [LOJ#525]「LibreOJ β Round #4」多项式
[LOJ#525]「LibreOJ β Round #4」多项式 试题描述 给定一个正整数 k,你需要寻找一个系数均为 0 到 k−1 之间的非零多项式 f(x),满足对于任意整数 x 均有 f(x) ...
- [LOJ#526]「LibreOJ β Round #4」子集
[LOJ#526]「LibreOJ β Round #4」子集 试题描述 qmqmqm有一个长为 n 的数列 a1,a2,……,an,你需要选择集合{1,2,……,n}的一个子集,使得这个子集中任意两 ...
- [LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机)
[LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机) 试题描述 IOI 的比赛开始了.Jsp 和 Rlc 坐在一个角落,这时他们听到了一个异样的声音 …… 接着他们发现自己收 ...
- LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力
二次联通门 : LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力 /* LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力 叫做计算几 ...
随机推荐
- 对fgets末尾'\0'的处理
之所以要对fgets自动添加的字符进行处理的原因之一是:当你想比较输入的字符时,你会发现输入的字符和源码用来进行对比的字符一模一样,但是使用strcmp比较时就是不一样,原因就是fgets对输入字符添 ...
- 《学习CSS布局》学习笔记
近几天做了一个小的企业展示网站.虽然页面是在模板的基础上改的,但改的多了不熟悉CSS也很麻烦.正好我看到了学习CSS布局这个网站,于是补习了一下CSS知识. CSS的显示 CSS的元素分为两类:块级元 ...
- [VC]char 和 wchar_t相互转化
#include <windows.h> #include <stdio.h> //function: charTowchar //purpose:char to WCHAR ...
- 掘金 里面 写文章 带目录的时候 用#(空格)标题 后面用## title,一个页面只有一个H1
掘金 里面 写文章 带目录的时候 用#(空格)标题 后面用## title,一个页面只有一个H1
- @private@protected@public@package
@private@protected@public@package 为了强制一个对象隐藏其数据,编译器限制实例变量范围以限制其在程序中的可见性 但是为了提供灵活性,苹果也让开发者显式设置范围(四选一) ...
- VC下的C语言程序随机数的产生
本文章适用于VC编译器,VC编译器里有个rand()函数,我们用它来实现取随机数. #include <stdio.h> #include<stdlib.h> //随机数的头文 ...
- 数据预处理之数据规约(Data Reduction)
数据归约策略 数据仓库中往往具有海量的数据,在其上进行数据分析与挖掘需要很长的时间 数据归约 用于从源数据中得到数据集的归约表示,它小的很多,但可以产生相同的(几乎相同的)效果 数据归约策略 维归约 ...
- 【二分 最小割】cf808F. Card Game
Digital collectible card games have become very popular recently. So Vova decided to try one of thes ...
- Pycharm安装类库
比如安装requests 打开settings,选择Project 下面的Project Interpreter,点击pip,在弹出窗口里输入requests然后点击install 即可!
- jmeter操作mysql数据库
1.导入jdbc的jar包,因为jmeter本身不能直接连接mysql,所以需要导入第三方的jar包,来连接mysql 2.创建数据库连接配置,mysql的url.端口号.账号.密码 在JDBC Co ...