E. Permutation Game(game)

news2024/11/24 22:34:30

Problem - E - Codeforces

两个玩家正在玩一个游戏。他们有一个整数1,2,...,n的排列组合(排列组合是一个数组,其中从1到n的每个元素正好出现一次)。这个排列组合没有按升序或降序排序(即排列组合没有[1,2,...,n]或[n,n-1,...,1]的形式)。

最初,排列组合的所有元素都被染成红色。玩家轮流进行。在他们的回合中,玩家可以做三个动作之一。

重新排列组合的元素,使所有红色元素保持它们的位置(注意,蓝色元素可以相互交换,但这不是必须的)。
将一个红色元素的颜色改为蓝色。
跳过这一轮。
如果排列组合以升序排序(即变成[1,2,...,n]),则第一个玩家获胜。如果排列顺序为降序(即变成[n,n-1,...,1]),则第二个玩家获胜。如果游戏持续了100500个回合,没有人获胜,则以平局结束。

你的任务是确定如果双方都以最佳方式进行游戏,游戏的结果是什么。

输入
第一行包含一个整数t(1≤t≤105)--测试案例的数量。

每个测试案例的第一行包含一个整数n(3≤n≤5⋅105)--排列组合的大小。

第二行包含n个整数p1,p2,...,pn--排列组合本身。排列组合p不按升序或降序排序。

所有测试案例的n之和不超过5⋅105。

输出
对于每个测试案例,如果第一个玩家获胜,则打印 "第一",如果第二个玩家获胜,则打印 "第二",如果结果是平局,则打印 "平局"。

例子
inputCopy
4
4
1 2 4 3
3
2 3 1
5
3 4 5 2 1
6
1 5 6 3 2 4
outputCopy
第一个
捆绑
第二个
捆绑
注意
让我们看看在第一个例子中第一个玩家是如何获胜的。

他们应该在前两个回合中把元素3和4涂成蓝色,然后他们可以把蓝色元素重新排序,使排列组合成为[1,2,3,4]。第二位棋手既不能干扰这个策略,也不能更快获胜。

题解:

如果我们是玩家,我们应该怎么赢得游戏

假如我们是玩家1,

我们应该把所有原本元素不是按1 ~ n排列的位置涂上蓝色后,排序

如果我们是玩家2 

我们应该把所有原本元素不是按照n~1排列的位置涂上蓝色后,排序

既然都想赢,那么肯定不会涂已经在应在的位置,

假如我是玩家1,肯定要优先涂数在降序排列的情况,这些对于玩家1是必须要涂的,不涂的话,另一个人肯定不会帮他涂啊,因为对于另一个人来说,这个位置已经排好序了(对于玩家2同理)

还有一种情况是,一个数他既不在升序排列的位置,也不在降序排列的位置,这种情况,两个人肯定,都想让对面涂,这种情况是非必要情况,因为即使我不涂,对面不涂的话,一样赢不了

结合以上情况,如何才能赢

肯定是我已经把必须的和不必需的涂完后,另一个人,还没有把必须涂的涂完,这样我才能赢

如果两个人都没有这种情况,说明一定是平局,

#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
#include<vector>
#include<map>
#include<cstring>
#include<cmath>
using namespace std;
#define int long long
void solve()
{
	int n;
	cin >> n;
	int x = 0,y = 0,z = 0;
	for(int i = 1;i <= n;i++)
	{
		int p;
		cin >> p;
		if(p == i&&p!= n -i +1)
		{
			x++;
		}
		else if(p != i&&p == n -i+1)
		{
			y++;
		}
		else if(p!=i&&p!=n - i+1)
		{
			z++;
		}
	}
	if(y+z <= x)
	{
		cout << "First\n";
	}
	else if(z + x < y)
	{
		cout <<"Second\n";
	}
	else
	{
		cout << "Tie\n";
	}
}
//3 8 4
signed main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);
	int t = 1;
	cin >> t;
    while(t--)
	{
		solve();
	} 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101178.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLO系列目标检测算法——YOLOS

YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Scaled-YOLOv4- 文章链接 YOLOv5- 文章链接 YOLOv6- 文章链接 YOLOv7- 文章链接 PP-YOLO- 文章链接 …

视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型

概率编程使我们能够实现统计模型&#xff0c;而不必担心技术细节。这对于基于MCMC采样的贝叶斯模型特别有用。 最近我们被客户要求撰写关于Stan的研究报告&#xff0c;包括一些图形和统计输出。 R语言中RStan贝叶斯层次模型分析示例stan简介 Stan是用于贝叶斯推理的C 库。它…

十、Docker 复杂安装之3主3从redis集群配置

假设公司现在1-2亿条数据需要缓存,单机单台设备肯定扛不住的,这个时候就需要分布式存储,用redis如果落地呢?本期就带着大家搭建一个3主3从redis集群。 1、拉取redis6.0.8镜像 涉及命令:docker pull redis:6.0.8 实例: 2、创建6个redis容器实例 涉及命令: docker ru…

k8s远程debug

k8s远程debug 1、方案1 方案1是不行的&#xff0c;因为k8s的ingress走的7层协议。 1.1、应用 启动debug端口 java -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 -server -Xms1024m -Xms1024m -jar /opt/app/server.jarnetstat -ntlp1.2、配置k8s的网络和域…

Qt-Web混合开发-QWebSocket作为QWebChannel通信数据传输接口(10)

Qt-Web混合开发-QWebSocket作为QWebChannel通信数据传输接口&#x1f499;&#x1f353; 文章目录Qt-Web混合开发-QWebSocket作为QWebChannel通信数据传输接口&#x1f499;&#x1f353;1、概述&#x1f41b;&#x1f986;2、实现效果&#x1f605;&#x1f64f;3、实现功能&a…

m通过matlab实现遥测信道主要影响因素分析

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 遥测技术是指被测对象的状态参数进行超远距离测量&#xff0c;并将测量的数据通过特殊的通信方式发送给地面接收站的一种技术。整个遥测发送接收系统称为遥测系统&#xff0c;而发送遥测信号所通…

LaTeX教程(一)——LaTeX介绍以及导言详解

文章目录1. Latex 介绍2. LaTeX基础2.1 导言区2.2 正文区3. 导言详解3.1 设置时间、作者、日期3.2 全局设置4. 文件组织1. Latex 介绍 什么是LATEX &#xff1f;LATEX 是一种格式。为免误会&#xff0c;初次接触这一概念的读者可以粗略地将 LATEX 理解成是对 TEX 的一层封装。…

【DELM回归预测】基于matlab松鼠算法改进深度学习极限学习机SSA-DELM数据回归预测【含Matlab源码 1904期】

⛄一、PSO-DELM简介 1 DELM的原理 在2004年&#xff0c;极限学习机&#xff08;extreme learning machine,ELM&#xff09;理论被南洋理工大学的黄广斌教授提出&#xff0c;ELM是一种单隐含层前馈神经网络&#xff08;single-hidden layer feedforward neural network,SLFN&am…

开发社交聊天APP需要注意什么?如何快速开发聊天功能

随着互联网的发展&#xff0c;人们的沟通方式也在悄悄发生变化&#xff0c;由原来的面对面沟通&#xff0c;发展为网上沟通。让大家日常生活的通讯越来越方便了&#xff0c;各种APP层出不穷。那么&#xff0c;想开发一款社交聊天并进行运营&#xff0c;需要注意哪些方面&#x…

【推荐】产品经理需求模板,案例等文档合集15篇

产品经理的职责描述仍然分歧很多&#xff0c;因人、因公司而异。即使是在相对较为一致的高科技行业&#xff0c;不同公司中的职位描述也是很不同的。但通常认为产品经理的职责主要包括&#xff1a;产品经理负责调查并根据用户的需求,确定开发何种产品, 选择何种技术、商业模式等…

【Python机器学习】过拟合及其抑制方法讲解及实战(图文解释 附源码)

需要源码请点赞关注收藏后评论区留言私信~~~ 欠拟合、过拟合与泛化能力 欠拟合 最简单的线性模型&#xff0c;它是用一条直线来逼近各个样本点&#xff0c;显然力不从心&#xff0c;这种现象称为欠拟合。欠拟合模型是由于模型复杂度不够&#xff0c;训练样本集容量不够&#…

哈希表题目:环形链表

文章目录题目标题和出处难度题目描述要求示例数据范围进阶解法一思路和算法代码复杂度分析解法二思路和算法代码复杂度分析题目 标题和出处 标题&#xff1a;环形链表 出处&#xff1a;141. 环形链表 难度 2 级 题目描述 要求 给你一个链表的头结点 head\texttt{head}h…

网易云VIP音乐NCM文件转MP3,C语言版本

前言网易云的Vip音乐下载下来,格式不是mp3/flac这种通用的音乐格式&#xff0c;而是经过加密的ncm文件。只有用网易云的音乐App才能够打开。于是想到可不可以把.ncm文件转换成mp3或者flac文件&#xff0c;上google查了一下&#xff0c;发现有不少人已经做了这件事&#xff0c;但…

go : 无法将“go”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

先安装go环境 https://blog.csdn.net/csl12919/article/details/128372584?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128372584%22%2C%22source%22%3A%22csl12919%22%7Dhttps://blog.csdn.net/csl12919/article/details/1…

C案例:最小覆盖圆问题

文章目录一、提出任务 - 最小覆盖圆&#xff08;一&#xff09;描述&#xff08;二&#xff09;输入&#xff08;三&#xff09;输出&#xff08;四&#xff09;样例输入输出二、完成任务&#xff08;一&#xff09;编程思路&#xff08;二&#xff09;编写代码&#xff0c;实现…

魔百和M401A刷入Armbian系统EMMC

魔百和M401A刷入Armbian系统 准备工具 1. 电视盒子、U盘、键盘、显示器、HDMI线 2. armbian系统镜像包&#xff1a; Armbian_23.02.0_amlogic_s905l3a_bullseye_5.15.82_server_2022.12.12.img.gz 3. U盘写入工具&#xff1a; refus/usbWriter/balenaEtcher文件链接&#xff…

阻塞队列的使用

&#x1f388;专栏链接:多线程相关知识详解 目录 一.阻塞队列的介绍 二.使用阻塞队列/生产者消费者模型的好处 1.使用阻塞队列,有利于代码"解耦合" 2.削峰填谷 三.阻塞队列的使用 四.模拟实现阻塞队列 一.阻塞队列的介绍 1.线程是安全的 2.当进行入队操作的时候…

[附源码]计算机毕业设计Node.js吃天下美食网站(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

【AI with ML】第 12 章 :TensorFlow Lite 简介

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

css浮动

浮动的顺序贴靠特性 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>浮动</title><style>.box{width: 250px;height: 100px;border: 1px solid #000;}.box .c1{width: 150px;height: 100p…