当前位置: 首页 > 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

相关文章:

【题解】BZOJ4975 区间翻转

题目大意 两人博弈&#xff0c;有一个 nnn 的排列 a1,a2,…,ana_1,a_2,\dots,a_na1​,a2​,…,an​&#xff0c;每次操作为选择长度为 4x24x24x2 或 4x34x34x3 的区间&#xff0c;将其翻转&#xff0c;要求翻转后字典序大于翻转前。第一个不能操作的输。Q 先手&#xff0c;T 后…...

火箭参数相关知识

火箭参数相关 前言&#xff1a;学习笔记&#xff0c;很初级部分内容来之相关书籍&#xff0c;入门学习&#xff0c;欢迎指正 1 坐标系右手定则&#xff1a; 伸开手掌&#xff0c;大拇指指向X轴&#xff0c;四指指向Y轴&#xff0c;四指弯曲90后所指向的方向为Z轴。X 、Y、Z并…...

【JavaEE】死锁是什么?如何避免死锁(保姆级讲解)

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶本篇文章将介绍什么是死锁&#xff0c;死锁的四大必要条件&#xff0c;如何去避免死锁~~~ 目录 一、死锁是什么&#xff1f; 二、关于死锁的情况 2.1 一个线程的情况 2.2 两个线程的情况…...

JS 实现占位符截取字符串内容

//charnum占位长度&#xff0c; //str 字符串内容 //返回charnum占位长度 下的字符串长度; function getcharlength(charnum,str){ var len 0; for (var i 0; i < str.length; i) { var c str.charCodeAt(i); //单字节加1 …...

Prophet学习(四)趋势Changepoints

目录 趋势Changepoints&#xff08;Trend Changepoints&#xff09; Prophet中的自动更改点检测&#xff08;Automatic changepoint detection in Prophet&#xff09; 调整趋势灵活性&#xff08;Adjusting trend flexibility&#xff09; 指定变更点的位置&#xff08;Spe…...

超表面学习 初步印象

超表面学习中 第一章 初步认识 一.传统超表面 1.吸波 2.反射相位 3.透射相位 4.电磁带隙 引申出来的超表面基础应用&#xff1a; 1.透波透镜&#xff08;对应透射相位&#xff09; 分为近场和远场 近场&#xff1a;贝塞尔波束等等 远场&#xff1a;方向图控制&#xff08;对应…...

脂肪肝 肾结石 怎么得来的

脂肪肝怎么得来的1.脂肪肝2.肾结石是如何产生的&#xff1f;1.脂肪肝 是由于肝细胞内脂肪堆积过多引起的慢性疾病&#xff0c;引起脂肪肝的因素有多种&#xff0c;由于常常没有自觉症状&#xff0c;往往不易引起人们的重视。常见原因有以下几种&#xff1a; 第一、过量饮酒&a…...

Python 进阶指南(编程轻松进阶):一、处理错误和寻求帮助

原文&#xff1a;http://inventwithpython.com/beyond/chapter1.html 请您不要将计算机当成佣人&#xff0c;因为这样会让您常常感觉很烦躁。比如说当计算机向您显示错误消息时&#xff0c;并不是因为您冒犯了它。计算机是我们大多数人都会接触到的最复杂的工具&#xff0c;但归…...

windows服务器自带IIS搭建网站并发布公网访问【内网穿透】

文章目录1.前言2.Windows网页设置2.1 Windows IIS功能设置2.2 IIS网页访问测试3. Cpolar内网穿透3.1 下载安装Cpolar3.2 Cpolar云端设置3.3 Cpolar本地设置4.公网访问测试5.结语转载自远程源码文章&#xff1a;【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网穿透…...

IFPUG功能点度量4:度量事务功能

一、基本概念 1、事务功能 事务功能是处理数据功能的基本过程。 每个事务功能都是一个基本过程。 事务功能由多个逻辑处理来完成。 事务功能包含三种类型&#xff1a;EI、EO、EQ 2、基本过程 一个基本过程是由一个逻辑处理或者多个逻辑处理来完成的。 如何识别&#xf…...

未来公寓智能化设计平台项目(上)

目录 1. 项目背景 1.1 建设背景 1.2 建设依据 2. 未来公寓总体方案设计 2.1 建设目标 2.2 未来公寓服务平台总体架构 2.3 功能简介 2.4 方案优势 3. 社区基础数据中心建设 3.1 建设目标 3.1.1 统一数据资产技术架构 3.1.2 完善和规范数据相关标准 3.1.3 统一元数据…...

Java8新特性 Steam流

Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。 Stream API可以极大提高Java程序员的生产力&#xff0c;让程序员写出高效率、干净、简洁的代码。 这种风格将要处理的元素集合看作一种流&#xff0c; 流在管道中传输&…...

Unity 实现大世界地图的技术原理

在游戏开发中&#xff0c;大世界地图是一种非常重要的场景&#xff0c;它可以让玩家在游戏中自由探索和移动。但是&#xff0c;实现大世界地图也面临着一些技术挑战&#xff0c;比如如何处理大量的地图数据、如何优化地图的加载和渲染等问题。在本文中&#xff0c;我们将介绍Un…...

jQuery制作一个简单的打地鼠游戏(超详细讲解)

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;老茶icon &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;计…...

typora和C51开发环境

经过查阅&#xff0c;可以用wiz和typora联动的方式记录笔记&#xff0c;这样一个文件夹里既可以用typora也可以用内置编辑器&#xff08;一种富文本编辑器&#xff09;&#xff0c;注意同一个文件不能用不同的编辑器&#xff0c;否则会错乱。以下&#xff0c;我列举了用typora的…...

linux echo彩色打印

定义了三个颜色 把打印的内容加载头和尾巴之间即可 pt_head_green"\033[32;1m" pt_head_red"\033[31;1m" pt_head_yellow"\033[33;1m" pt_tail"\033[0m"echo "$pt_head_yellow | make clean |$pt_tail"...

2023年4月PMP®项目管理专业人士认证招生简章

PMP认证是Project Management Institute在全球范围内推出的针对评价个人项目管理知识能力的资格认证体系。国内众多企业已把PMP认证定为项目经理人必须取得的重要资质。 【PMP认证收益】 1、能力的提升&#xff08;领导力&#xff0c;执行力&#xff0c;创新能力&#xff0c;竞…...

Java每日一练(20230410)

目录 1. 二叉树的锯齿形层序遍历 &#x1f31f;&#x1f31f; 2. 从中序与后序遍历序列构造二叉树 &#x1f31f;&#x1f31f; 3. 平衡二叉树 &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专…...

主动配电网故障恢复的重构与孤岛划分统一模型研究【升级版本】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

TS2023年面试题汇总~~~~持续更新中!!!!

文章目录一、typescript 的数据类型有哪些二、TypeScript 中枚举类型的理解三、TypeScript 中接口的理解四&#xff0c; TypeScript 中类的理解五&#xff0c;TypeScript 中泛型的理解&#xff1f;六&#xff0c;TypeScript 中高级类型的理解&#xff1f;六&#xff0c;TypeScr…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...