4975: 区间翻转

Time Limit: 1 Sec  Memory Limit: 256 MB
Submit: 176  Solved: 81
[Submit][Status][Discuss]

Description

小Q和tangjz正在一个长度为n的序列a_1,a_2,...,a_n上玩一个有趣的关于区间翻转的游戏。小Q和tangjz轮流行动,小Q先手。每次行动方玩家需要选择一个长度为4x+2或4x+3的区间[l,r](1<=l<=r<=n),其中x是该玩家自行选择的非负整数,然后将a_l,a_{l+1},...,a_{r-1},a_r翻转,例如1 3 2 5 4翻转会得到4 5 2 3 1。为了防止游戏无
限进行下去,他们规定每次操作之后得到的新序列的字典序必须比操作前的序列大。最先不能采取任何行动的玩家将会输掉这局游戏。假设小Q和tangjz都会采取最优策略行动,请写一个程序判断谁会获得这局游戏的胜利。

Input

第一行包含一个正整数n(1<=n<=50),表示序列的长度。
第二行包含n个互不相同的正整数a_1,a_2,...,a_n(1<=a_i<=n),分别表示序列中的每个元素。

Output

输出一行一个字符,若小Q胜利,输出"Q";若tangjz胜利,输出"T"(不含引号)。

Sample Input

4
4 2 1 3

Sample Output

T

①每次翻转区间,区间中的逆序对数和顺序对数会互换

②因为翻转区间长度只能是4x+3, 4x+2,所以区间中的顺序对数+逆序对数一定为奇数

③最终必输态是当前序列顺序对数为0

由上可得:如果一开始顺序对数为偶数,那么先手必败,否则先手必胜

#include<stdio.h>
int a[55];
int main(void)
{int n, i, j, ans;scanf("%d", &n);for(i=1;i<=n;i++)scanf("%d", &a[i]);ans = 0;for(i=1;i<=n-1;i++){for(j=i+1;j<=n;j++){if(a[i]<a[j])ans ^= 1;}}if(ans==0)printf("T\n");elseprintf("Q\n");return 0;
}

bzoj 4975: 区间翻转(博弈)相关推荐

  1. BZOJ 3223: Tyvj 1729 文艺平衡树-Splay树(区间翻转)模板题

    3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 6881  Solved: 4213 [Submit][S ...

  2. Duan2baka的Splay模板!(区间翻转)

    BZOJ[3223] Tyvj 1729 文艺平衡树 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3223 Splay区间翻转 代码如下: ...

  3. HDU - 3911 Black And White 区间翻转+区间连续最长

    区间翻转的裸题,wrong了两发,没找bug,直接又打了一遍,这么大量的代码找bug是疯了. 重新开始做线段树的一些题了,感觉对于pushdown与lazy数组有点印象了. 首先,lazy数组是记录的 ...

  4. Splay ---- 2018牛客多校第三场 区间翻转搞区间位移 或者 rope可持久化块状链表

    题目链接 题目大意: 就是每次把牌堆中若干个连续的牌放到堆顶,问你最后牌的序列. 解题思路: Splay 区间翻转的模板题: 对于一个区间[1,2,3,4,5,6,7,8][1,2,3,4,5,6,7 ...

  5. Splay ---- 文艺平衡树区间翻转的建树模式

    Splay 的区间操作 这个splay已经不是平常的权值splay了, 每个节点维护区间的位置取决于它在树里面的位置 首先这课splay中序遍历的结果就是你维护的整个区间的数值!!注意这个中序遍历很重 ...

  6. CodeForces - 1401 F Reverse and Swap(线段树, 区间翻转, 区间交换,清晰易懂)

    CodeForces - 1401 F Reverse and Swap(线段树, 区间翻转, 区间交换)   首先一共有四个操作,第一个和第四个都是线段树的基本操作,直接用线段树实现.      第 ...

  7. [置顶] hdu 1890 伸展树区间翻转

    题意: 给你n个数,每次先输出第i大的数的位置(如果有多个,选下标小的那个),然后每次将第i个位置到第i大的数所在位置之间的数进行翻转. 思路:输入的数组可能有多个相同的值,我们可以进行两次排序把数组 ...

  8. Luogu P3165 Splay区间翻转

    脑残记录: 这周末2天只做了一道平衡树题目(2天被一道题限住),发现自己的很多问题, 学了算法及其性质 但是总是做不出来题目,很难利用学过的性质, 同样这种情况再次发生在今天 没有运用的能力,思维太差 ...

  9. bzoj 1552: [Cerc2007]robotic sort bzoj 3506: [Cqoi2014]排序机械臂(splay区间翻转)

    1552: [Cerc2007]robotic sort Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1206  Solved: 460 [Submi ...

最新文章

  1. cocos2d-x的未来展望
  2. java 读取配置文件中的列表
  3. Microsoft Azure 云存储服务概念
  4. 面向对象数据库和关系数据库的区别
  5. 持续集成:部署发布篇
  6. php curl 发送https请求失败,php的curl扩展无法发起https请求
  7. 移植Linux3.4.2版本内核到mini2440
  8. 用python画明星_用python画一只可爱的皮卡丘实例
  9. 【BZOJ3879】SvT,后缀数组+单调栈维护sum
  10. Mongodb常规操作【一】
  11. 区别js中的3/2(结果1.5))与 java 中的 2/3(结果:0)
  12. anki 新的卡片类型_Anki 常用操作方法合集(一)常用操作1
  13. 二叉链表和职工管理系统结合_C语言课程设计_职工信息管理系统_单链表实现程序源代码...
  14. 编程基础(五)—— 虚拟内存
  15. vue使用阿里巴巴矢量图标库
  16. 小马激活软件下载,当心伪小马,有病毒
  17. 计算机网络局域网的组建实验报告,小型局域网组建实验报告
  18. eclipse配置red5服务器
  19. MySQL基本架构示意图
  20. ireport 5.6.0 添加 Conditional Style 动态加粗字体

热门文章

  1. python界面-图形界面
  2. python 在线培训费用-python培训费需要多少钱?
  3. python零基础能学吗-零基础怎么样才能学好Python?Python入门必看
  4. 免费python课程排行榜-用python爬取2017年中国最好大学排名
  5. python能做什么工作-学Python能找到什么工作?这4种工作最热门!
  6. python入门指南txt-BeginnersGuide
  7. 【模拟】牛客网:顺时打印矩阵
  8. 常用编码软件简单使用记录 2 : 非自主编码器
  9. ftp服务器文件端口,ftp服务器端口用哪个文件
  10. HTML显示波形,CSS3波形loading动画特效