D. Tokitsukaze, CSL and Stone Game(博弈)

news2024/11/18 6:01:28

Problem - D - Codeforces

时津风和CSL正在玩一个石头的小游戏。

一开始,有n个石子堆,其中第ii堆有aiai石子。两位玩家轮流走棋。时津风先走。每一回合,棋手选择一个非空的棋堆,并从该棋堆中准确地取出一块石头。如果在轮到他之前,所有的棋堆都是空的,或者在取出石头之后,两个棋堆(可能是空的)包含相同数量的石头,那么玩家就输了。假设双方都以最佳状态下棋,那么谁会赢得比赛?

考虑一个例子:n=3n=3,堆的大小为a1=2a1=2,a2=3a2=3,a3=0a3=0.不可能选择空堆,所以时风有两个选择:第一和第二堆。如果她选择第一堆,那么状态将是[1,3,0][1,3,0],这是个好棋。但如果她选择第二堆,那么状态将是[2,2,0][2,2,0],她马上就输了。所以她唯一的好棋是选择第一堆。

假设两位棋手都是走自己的好棋,而且从不犯错,那么谁会赢得比赛?

请注意,即使一开始就有两堆相同数量的棋子,时风仍然可以下出有效的第一步棋。只需要在她走完后,没有两堆相同数量的棋子。

输入

第一行包含一个整数nn(1≤n≤1051≤n≤105)--棋堆的数量。

第二行包含n个整数a1,a2,...,na1,a2,...,an(0≤a1,a2,...,an≤1090≤a1,a2,...,an≤109),这意味着第ii堆有aiai的石头。

输出

如果时风会赢,则打印 "sjfnb"(不带引号);如果CSL会赢,则打印 "cslnb"(不带引号)。请注意,输出字符是区分大小写的。

例子

输入

拷贝

1
0
输出

复制

cslnb
输入

复制

2
1 0
输出

复制

cslnb
输入

复制

2
2 2
输出

复制

sjfnb
输入

复制

3
2 3 1
输出

复制

sjfnb
注意

在第一个例子中,时风不能拿任何棋子,所以CSL会赢。

在第二个例子中,时风只能从第一堆棋中取走一颗棋子,然后,尽管他们没有棋子,但这两堆棋的数量是一样的,这意味着CSL会赢。

在第三个例子中,时风将会获胜。这里有一个最佳方法:

首先,时风可以选择第一堆棋,并从这堆棋中取出一颗棋子。
然后,CSL只能选择第一堆,因为如果他选择第二堆,他将立即输掉。
最后,时风可以选择第二堆,然后CSL将别无选择,只能输。
在第四个例子中,他们在任何时候都只有一个好的选择,所以时风可以让游戏持续尽可能长的时间,最终获胜。
题解:
我们考虑如何进入到必败态

一.开始就是必败态

1.如果出现两堆为0,sjf操作不了,直接输

2.如果出现两组两堆相同的,sjf无论怎么操作肯定会有两个或以上相同,(2 2 2)这种也是(2 2 4 4)

3.如果出现i - 1,i , i这种形式,sjf无论怎么操作也会输

二.开始不是必败态,多远走到必败态

0,1,2,3......n - 1类似这样,如果一个人拿完,类似这种形式,那这个人必赢,因为下一个人无论如何怎么操作,都会出现两个相同的

排序一下,记录s += (ai - (i - 1))的值,如果%2 == 0,后手必胜,

 

#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<cmath>
#include<queue>
using namespace std;
typedef long long ll;
#define int long long
typedef pair<int,int> PII; 
const int N = 1e6 + 10;
int a[100050]; 
void solve()
{
	int n;
	cin >> n;
	for(int i = 1;i <= n;i++)
	{
		cin >> a[i];
	}
	sort(a + 1,a + 1 + n);
	int f = 0;
	for(int i = 2;i <= n;i++)
	{
		if(a[i] == a[i - 1])
		{
			f ++;
		}	
		if(a[i] == a[i - 1] &&a[i - 1]== 0)
		{
			f = 2;
		}
		if(a[i] == a[i - 1] &&i > 2&&a[i - 2] + 1 == a[i])
		{
			f = 2;
		}
	}
	int s = 0;
	for(int i = 1;i <= n;i++)
	{
		s += (a[i] - (i - 1));
	}
	if(s%2 == 0||f >= 2)
	{
		cout <<"cslnb";
	}
	else
	{
		cout <<"sjfnb";
	}
}


signed main()
{
//	ios::sync_with_stdio(0);
//	cin.tie(0);cout.tie(0);
	int t = 1;
//	cin >> t;
	while(t--)
	{
		solve(); 
	}
}

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

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

相关文章

2 路 500MSPS/1GSPS/1.25GSPS 14 位直流耦合 AD 采集 FMC 子卡模块

板卡概述 FMC155 是一款基于 VITA57.1 标准的&#xff0c;实现 2 路 14-bit、 500MSPS/1GSPS/1.25GSPS 直流耦合 ADC 同步采集 FMC 子卡模 块。该模块遵循 VITA57.1 规范&#xff0c;可直接与 FPGA 载卡配合使用&#xff0c;板 卡 ADC 器件采用 ADI 的 AD9680 芯片&#xf…

Python每日一练(20230420)

目录 1. 数组逐位判断 &#x1f31f; 2. 交错字符串 &#x1f31f;&#x1f31f; 3. 二进制求和 &#x1f31f; 4. 四舍六入五成双规则 &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 J…

12、HOOK原理下

一、去符号和恢复符号 1.1 Stip和 Strip Type解释 strip在iOS中的作用是 剥掉目标文件中一些符号信息和调试信息&#xff0c;使文件变小。dead code strip &#xff1a; 死代码剥离、然后再去链接。那么strip在哪些地方不能起作用呢&#xff1f; 动态库 不能strip全局符号、因…

Windows下使用SSH密钥实现免密登陆Linux服务器

工具&#xff1a; win10、WinSCP 生成ssh密钥&#xff1a; 打开终端&#xff0c;使账号密码登录&#xff0c;输入命令 ssh-keygen -t rsa 会提示密钥存放路径&#xff0c;一般存放在默认路径&#xff0c;直接回车即可&#xff0c;中间会提示输入密码&#xff0c;这里需要注…

工作流自动化和RPA自动化,哪个更适合你?

2018年&#xff0c;一款名为《Overcooked!2》&#xff08;又名“胡闹厨房”、“分手厨房”&#xff09;的多人合作模拟类游戏风靡全球&#xff0c;在游戏中&#xff0c;玩家扮演厨师在充满各种障碍和危险的厨房里准备食材、烹饪、上菜和清理&#xff0c;需要在尽可能短的时间内…

window11开启wsl2

前言 以前玩linux&#xff0c;总是习惯装双系统&#xff0c;其实双系统特别麻烦。wsl现在的功能其实挺强大的&#xff0c;完全可以代替双系统&#xff0c;去完成一些在linux上的环境搭建。这篇文章记录下window11如何开启wsl2功能&#xff0c;并且安装ubuntu系统。 开启wsl2功…

2023自助洗车店系统解决方案共享洗车无人洗车风口

2021年中国汽车保有量预计超6.3亿辆,洗车市场需求巨大,传统洗车投资大、费用贵、成本高耗水大、占地面积大,而自助洗车机占据传统洗车耗水量1/4 ,占地面积1/70 ;节能环保得到政府的大力支持,且结合信息物联技术,实现智能化管理,高效能运营,灵活便捷服务,符合智慧城市发展原则,成…

开放式耳机有什么好处,列举几款性能高的开放式蓝牙耳机

骨传导耳机也称为“不入耳式”耳机&#xff0c;是一种通过颅骨、骨迷路、内耳淋巴液和听神经之间的信号传导&#xff0c;来达到听力保护目的的一种技术。由于它可以开放双耳&#xff0c;所以在跑步、骑行等运动时使用十分安全&#xff0c;可以避免外界的干扰。这种耳机在佩戴时…

AAAI 2023 | 基于Conductance的高效率和高质量的图聚类算法

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; ╱ 作者简介╱ 林隆龙 博士、副教授 目前任职于西南大学计算机与信息科学学院 软件学院。2022年6月于华中科技大学计算机科学与技术学院获博士学位。目前主要研究兴趣包括(时序)社区挖掘、局部聚类、Personaliz…

Altium Designer 20 导出 Gerber 制造文件流程及注意事项

一、导出 Gerber 流程 设置原点&#xff1a;在Edit菜单中选择Origin&#xff0d;Set &#xff08;快捷键E-O-S&#xff09;定好原点&#xff0c;一般放在左下角附近即可。 放置分孔图表&#xff1a;在Place菜单中选择String放置“.Legend”&#xff08;快捷键P-S&#xff09;…

C++多线程编程(一) thread类初窥

多线程编程使我们的程序能够同时执行多项任务。 在C11以前&#xff0c;C没有标准的多线程库&#xff0c;只能使用C语言中的pthread&#xff0c;在C11之后&#xff0c;C标准库中增加了thread类用于多线程编程。thread类其实是对pthread的封装&#xff0c;不过更加好用&#xff…

ThreadLocal的相关面试题

ThreadLocal的特点&#xff1a;实现线程间的资源隔离&#xff0c;实现线程内的资源共享 2.原理是&#xff0c;每个线程都有一个ThreadLocalMap类型的成员变量&#xff0c;用来储存资源对象 1.调用set方法&#xff0c;就是以ThreadLocal自己作为key&#xff0c;资源对象作为val…

《花雕学AI》比尔・盖茨:AI 和 ChatGPT 可以改善人类生活,但也要防止滥用和危害

3月21号&#xff0c;微软创始人比尔盖茨&#xff0c;发表最新AI文章《人工智能时代已经开始——人工智能与手机、互联网一样具有革命性》&#xff0c;文章中表示&#xff1a;「自1980年首次看到图形用户界面&#xff08;graphical user interface&#xff09;以来&#xff0c;O…

通过logstash实现mysql与es的双向数据同步

参考题目 一种基于MySQL和Elasticsearch的数据同步方法及系统基于MySQL和Elasticsearch的数据同步方法一种基于MySQL和Elasticsearch的数据同步系统基于MySQL和Elasticsearch的数据同步技术 目录 1【理论调研】 方案1&#xff1a;使用Logstash实现数据同步 方案2&#xff1a…

Spring MVC基本认识与操作

SpringMVC是隶属于Spring框架的一部分&#xff0c;主要是用来进行Web开发&#xff0c;是对Servlet进行了封装。 先来介绍三个概念&#xff1a; SpringMVC是处于Web层的框架&#xff0c;所以其主要的作用就是用来接收前端发过来的请求和数据然后经过处理并将处理的结果响应给前…

SpringCloud 微服务系列——【基础与服务注册中心详解】

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

文本批量翻译-批量翻译文件名

批量将英文翻译成中文的软件 批量将英文翻译成中文的软件的主要用途场景主要是在需要大量翻译英文文本到中文的场景下使用&#xff0c;例如&#xff1a; 商务文件翻译&#xff1a;许多企业需要将其商务文件&#xff0c;如合同、报告、信函等翻译成中文&#xff0c;以便其中文读…

HTML5 <p> 标签、HTML5 <pre> 标签

HTML5 <p> 标签 实例 HTML5 <p>标签用于定义一个段落。请参考下述示例&#xff1a; 以下代码标记了一个段落&#xff1a; <p>这是一个段落。</p>尝试一下 (在页面下部&#xff0c;您可以找到更多实例) 浏览器支持 目前大多数浏览器支持 <p>标…

java健身房会员签到,会员提醒,留言,消费,公告

1. 主页&#xff1a;即时登录,提供会员和管理员的登录。 2. 会员卡办理&#xff1a;登记健身会员的信息,设置卡到期时间。 3. 会员消费系统&#xff1a;对健身会员的日常消费进行添加。 4. 在线交流&#xff1a;健身会员之间的交流,管理员可以对其问题进行回复。 5.提醒功能&am…

一篇文章快速入门Spring AMQP

文章目录 一、AMQP二、Spring AMQP2.1 介绍2.2 SpringAMQP发送消息2.3 SpringAMQP接收消息2.4 WorkQueue模型2.4.1 概念2.4.2 示例 2.5 发布订阅模型2.5.1 介绍2.5.2 Fanout Exchange2.5.3 Direct Exchange2.5.4 Topic Exchange 2.6 消息转换器2.6.1 介绍2.6.2 切换消息转换器 …