Codeforces Round 897 (Div. 2) D. Cyclic Operations

news2024/10/7 8:23:08

置换环。

i向a[i]连边,最终一定会连出一个环,有可能存在着一条链在后边跟这,这个环的长度一定要等于k才是满足题意的。

出现链的原因就是链在成环的路上被另一条成环的路覆盖了。

对于任何k >= 2的情况,链是可以任意长的,比如1 2被2 3覆盖, 2 3被 3 4覆盖,以此类推,只要它指向的那个环的长度等于k就是对的。

k=1的时候特判a[i] = i。

写的时候死活想不到特判,啊啊啊啊啊

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'

using namespace std;

typedef pair<int, int> PII;
typedef long long ll;

const int N = 100010;

int n, k;
int a[N], lst[N];
int circle;
int st[N];

bool dfs(int u, int c)
{
	st[u] = c;
	int ne = a[u];
	if(st[ne] && st[ne] != c)
	{
		return true;
	}
	else if(st[ne])
	{
		int last = u, cnt = 1;
		while(last != ne)
		{
			last = lst[last];
			cnt ++;
		}
		if(cnt == k)return true;
		else return false;
	}
	
	lst[ne] = u;
	dfs(ne, c);
}

void solve()
{
	cin >> n >> k;
	for(int i = 1; i <= n; i ++)
	{
		cin >> a[i];
		st[i] = 0;
		lst[i] = -1;
	}
	
	if(k == 1)
	{
		int f = 1;
		for(int i = 1; i <= n; i ++)
		{
			if(a[i] != i)f = 0;
		}
		if(f)cout << "YES" << endl;
		else cout << "NO" << endl;
		return;
	}
	
	int cnt = 1;
	for(int i = 1; i <= n; i ++)
	{
		if(st[i])continue;
		if(!dfs(i, cnt ++))
		{
			cout << "NO" << endl;
			return;
		}
	}
	int f = 1;
	for(int i = 1; i <= n; i ++)
	{
		if(!st[i])f = 0;
	}
	if(f)cout << "YES" << endl;
	else cout << "NO" << endl;
}

int main()
{
	IOS
	int _;
	cin >> _;
	while(_ --)
	{
		solve();
	}
	
	return 0;
}

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

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

相关文章

开学ipad手写笔有必要买原装吗?推荐平价好用的电容笔

学生们都在为即将到来的新学期做准备&#xff0c;而iPad又是必不可少的一部分。科技的飞速发展改变了人们的生活。现在&#xff0c;各种各样的电子和数字产品都有了&#xff0c;所以才有了这种可以和平板电脑搭配使用的电容笔。随着国内电容笔的芯片技术的不断进步&#xff0c;…

Ubuntu22.04开启后屏幕黄屏

1. 故障现象 系统&#xff1a;Ubuntu22.04 现象&#xff1a;电脑从开机到进入桌面一直屏幕黄屏 2. 故障分析 可能为屏幕色彩调节出现故障 3. 解决方案 系统设置——》色彩——》删除原来的配置&#xff08;remove profile&#xff09;——》添加配置Colorspace:Compatibl…

Ubuntu 22.04LTS + 深度学习环境安装全流程

一、 CUDA Toolkit 安装 1. 选择需要安装的版本(下载地址) 2. 选择自己的系统版本获取下载地址和安装指令 3. 运行安装指令进行安装 wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run sudo sh cuda_12.2.…

_locked勒索病毒有什么特点,中了_locked勒索病毒该如何解决?

_locked是一种新型的勒索病毒&#xff0c;它通常通过电子邮件附件、恶意网站、云存储等途径传播。这种病毒一旦感染系统&#xff0c;就会加密受感染设备中的文件&#xff0c;并要求受害者支付一定数额的赎金以解密文件。这种病毒的特点、解决方案和预防措施如下&#xff1a; 特…

皕杰报表(BIOS Report)中设置序号的方法之四

我们分享了皕杰报表设置序号的三种方法&#xff0c;ds.#0&#xff0c;&cellx和row()&#xff0c;有时用这些方法设置序号并不能满足我们的需求&#xff0c;需要配以显示值的使用&#xff0c;使得序号分类更加清楚。我们看下面的主从表&#xff0c;是如何处理序号的显示值的…

第二证券:股利支付率和留存收益率的关系?

股利付出率和留存收益率是股票出资中非常重要的目标&#xff0c;它们可以反映公司的盈余才能和未来开展的潜力。那么&#xff0c;二者之间究竟有什么联系呢&#xff1f; 一、股利付出率和留存收益率的定义 股利付出率是指公司向股东分配的股息占当期净利润的比例&#xff0c;通…

【OAuth漏洞】第三方身份验证-账号接管

目录 什么是OAuth&#xff1f; OAuth 如何用于身份验证&#xff1f; 在 Booking.com 实施 OAuth 为什么 Booking.com OAuth 在 Booking.com 中的工作原理 Booking.com 帐户接管 安全漏洞 1 - 不允许唯一路径 安全漏洞 2 - 开放重定向 安全漏洞 1 2 帐户接管尝试 更…

navicat SSH连接数据库报错: Putty key format too new

问题 下载 Putty 0.79 生成了密钥&#xff0c;但是在navicat 15 使用SSH通道连接数据库报错: Putty key format too new 错误原因和处理 原来是因为生成的私钥格式是 V3 &#xff0c; navicat 15 只能识别 V2 所以&#xff0c;在 PuTTYgen Load 私钥&#xff0c;重新保存为 …

Windows MongoDB详细安装与配置

MongoDB详细安装与配置 下载地址 MongoDB安装 1.双击安装包进行安装 2.点击I accept the tems in the license agreement&#xff0c;点击Next 3.选择默认安装路径&#xff0c;点击completem&#xff1b;自定义安装路径&#xff0c;点击custom,点击browse选择路径&#xff0c…

听说,你想做大模型时代的应用层创业!

亲爱的科技探险家们和代码魔法师们&#xff1a; 未来的钟声已经敲响&#xff0c;预示着一场极度炫酷的虚拟现实游戏即将展开。从初期简单的智能识别&#xff0c;到设计师级别的图纸设计&#xff0c;生成式AI技术&#xff08;Generative AI&#xff09;以其独特理念和创新模式重…

【校招VIP】前端计算机网络之UDP相关

考点介绍 UDP是一个简单的面向消息的传输层协议&#xff0c;尽管UDP提供标头和有效负载的完整性验证&#xff08;通过校验和&#xff09;&#xff0c;但它不保证向上层协议提供消息传递&#xff0c;并且UDP层在发送后不会保留UDP 消息的状态。因此&#xff0c;UDP有时被称为不可…

2023 9月最新彩虹易支付系统源码

2023 9月最新彩虹易支付系统源码 更新日志&#xff1a; 1.新增微信公众号消息提醒功能 2.重构转账付款功能&#xff0c;支持通过插件扩展 3.商户后台新增代付功能 4.后台新增付款记录列表 5.支付宝插件新增预授权支付 6.优化支付通道列表&#xff0c;支持翻页与快速复制…

【UE5 智慧城市系列】5-通过鼠标键盘控制摄像机

目标 通过鼠标WASD键控制摄像机前后左右移动&#xff0c;鼠标滚轮控制弹簧臂长度的修改&#xff0c;鼠标中键控制摄像机旋转。 步骤 1. 首先创建一个游戏模式&#xff0c;这里命名为“BP_GameMode” 2. 再创建一个玩家控制器&#xff0c;这里命名为“BP_PlayerController” …

坚果投影人事地震:IPO之前,创始人被投资人踢出公司

大数据产业创新服务媒体 ——聚焦数据 改变商业 一份流传于网络的《董事会函件》以及一张微信截图显示&#xff0c;智能投影行业市占率第二的坚果投影8月28日发生人事地震&#xff0c;公司创始人胡震宇被董事会罢免董事长一职&#xff0c;由资方代表连萌担任临时董事长一职。 …

长胜证券:政策东风频吹 慢牛格局或已打开

长胜证券认为&#xff0c;目前商场遭到央行社融数据提振&#xff0c;全体预期出现了必定的回暖&#xff0c;经济运行的部分不确定性得以落地&#xff0c;8月社融数据作为先行指标提振了出资者信心。操作上看出资者可逐步加大仓位&#xff0c;选择前期调整较为充沛&#xff0c;有…

【校招VIP】产品项目分析之竞品分析

考点介绍&#xff1a; 在产品经理的日常工作当中&#xff0c;经常需要针对某个具体问题或特定功能点进行竞品调研&#xff1b;竞品分析是结构化分析方法论&#xff0c;核心思想是通过对比的方法寻找最佳的解决方案。 产品项目分析之竞品分析-相关题目及解析内容可点击文章末尾…

软件设计模式系列之三———工厂方法模式

1 模式的定义 工厂方法模式是一种常见的设计模式&#xff0c;属于创建型设计模式之一&#xff0c;它在软件工程中用于对象的创建。该模式的主要思想是将对象的创建过程抽象化&#xff0c;将具体对象的实例化延迟到子类中完成&#xff0c;以便在不同情况下可以创建不同类型的对…

2023-09-12 - 7 搜索排序

1 查询时设置权重 用户可以使用布尔查询将多种查询组合在一起。在默认情况下&#xff0c;这些查询的权重都为1&#xff0c;也就是查询之间都是平等的。有时我们希望某些查询的权重高一些&#xff0c;也就是在其他条件相同的情况下&#xff0c;匹配该查询的文档得分更高。此时应…

高忆管理:震仓什么意思?

震仓是股市、期货商场和商业运营中常见的一个概念。它的本意是指在生意中许多生意同一种证券或产品&#xff0c;然后引起商场的震荡。在详细的情境中&#xff0c;震仓有许多不同的意义。本文将从股市、期货商场和商业运营三个角度解析震仓的意义和效果。 一、股市中的震仓 在股…

RK3568开发笔记(八):开发板烧写buildroot固件(支持hdmi屏),搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/132826197 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…