当前位置: 首页 > news >正文

【题解】BZOJ4975 区间翻转

题目大意

两人博弈,有一个 nnn 的排列 a1,a2,…,ana_1,a_2,\dots,a_na1,a2,,an,每次操作为选择长度为 4x+24x+24x+24x+34x+34x+3 的区间,将其翻转,要求翻转后字典序大于翻转前。第一个不能操作的输。Q 先手,T 后手,判断谁赢。

题解

非常经典的结论题。

可以全排列,对每个排列暴力求,然后打表找规律。这是一种策略,在面对博弈结论题时异常好用。

正解:

发现一个区间翻转后区间内顺序对和逆序对的数量会交换。

题目给定的 4x+24x+24x+24x+34x+34x+3 这俩奇奇怪怪的数不得不让人想到一些特殊的性质。

观察区间长度为 4x+24x+24x+2 的数对总数,为 (4x+2)(4x+1)2=(2x+1)(4x+1)\dfrac{(4x+2)(4x+1)}{2}=(2x+1)(4x+1)2(4x+2)(4x+1)=(2x+1)(4x+1),为奇数。

区间长度为 4x+34x+34x+3 的数对总数,为 (4x+3)(4x+2)2=(2x+1)(4x+3)\dfrac {(4x+3)(4x+2)}{2}=(2x+1)(4x+3)2(4x+3)(4x+2)=(2x+1)(4x+3),为奇数。

也就是说,翻转后区间的顺序对数量奇偶性一定改变。

最终无法操作的状态为 n,n−1,n−2,…,1n,n-1,n-2,\dots,1n,n1,n2,,1,顺序对为 000.

只需要保证当前顺序对个数为奇数,就可以立于不败之地。

由于每次操作顺序对奇偶性必定改变,所以最初的序列就已经决定了结果。

若最初顺序对为奇数,Q 胜利。否则,T 胜利。

求顺序对使用树状数组,时间复杂度 O(nlog⁡n)O(n\log n)O(nlogn).

代码

#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
int n, tr[100005];
void update(int x, int val) {for (; x <= n; x += lowbit(x)) tr[x] += val;
}
int getsum(int x) {int sum = 0;for (; x; x -= lowbit(x)) sum += tr[x];return sum;
}
int main() {scanf("%d", &n);int cnt = 0;for (int i = 1, x; i <= n; i++) scanf("%d", &x), cnt += getsum(x), update(x, 1);if (cnt & 1) printf("Q");else printf("T");return 0;
}

END

http://www.lryc.cn/news/58492.html

相关文章:

  • 火箭参数相关知识
  • 【JavaEE】死锁是什么?如何避免死锁(保姆级讲解)
  • JS 实现占位符截取字符串内容
  • Prophet学习(四)趋势Changepoints
  • 超表面学习 初步印象
  • 脂肪肝 肾结石 怎么得来的
  • Python 进阶指南(编程轻松进阶):一、处理错误和寻求帮助
  • windows服务器自带IIS搭建网站并发布公网访问【内网穿透】
  • IFPUG功能点度量4:度量事务功能
  • 未来公寓智能化设计平台项目(上)
  • Java8新特性 Steam流
  • Unity 实现大世界地图的技术原理
  • jQuery制作一个简单的打地鼠游戏(超详细讲解)
  • typora和C51开发环境
  • linux echo彩色打印
  • 2023年4月PMP®项目管理专业人士认证招生简章
  • Java每日一练(20230410)
  • 主动配电网故障恢复的重构与孤岛划分统一模型研究【升级版本】(Matlab代码实现)
  • TS2023年面试题汇总~~~~持续更新中!!!!
  • CSS模块的书写以及删除线的作用和来历什么是删除线
  • Libhevc介绍
  • 基于Tensorflow的最基本GAN网络模型
  • 数据质量管理概述
  • C++ const、volatile和mutable关键字详解
  • MySQL实验四:数据更新
  • 商汤科技推出“日日新SenseNova”,大模型体系赋能人工智能新未来
  • 【中创AI】斯坦福人工智能年度报告:AI论文发表量中国世界第一!
  • Java基础(五)面向对象编程(基础)
  • 寻找CSDN平行世界的另一个你
  • ChatGPT的发展对客户支持能提供什么帮助?