【每日一题】—— C. Anonymous Informant(Codeforces Round 908 (Div. 2))(思维题)

🌏博客主页:PH_modest的博客主页
🚩当前专栏:每日一题
💌其他专栏:
🔴 每日反刍
🟡 C++跬步积累
🟢 C语言跬步积累
🌈座右铭:广积粮,缓称王!

一.题目描述

在这里插入图片描述

题目大意:

在这里插入图片描述

题目链接:

C. Anonymous Informant(Codeforces Round 908 (Div. 2))

二.思路分析

首先先理解题目,它是先给你一个数组b,b是由数组a通过轮换得到的,所以我们可以先通过b逆推前一个a:
在这里插入图片描述
①由此不难得出一个结论:当ai=i时,向左移动i次,那么ai一定位于该数组的最后一位
②那么继续顺着这个思路往下走:也就说如果一个数组b可以通过数组a轮换得到,那么数组b的最后一位一定是数组a的ai=i的数,也就是说如果数组b的最后一个数大小在1~n之间,那么数组b就可以由a通过轮换得到
③那么接下来就只需要先判断当前数组的最后一个数字是否满足条件,然后再将该数组逆推,得到上一个数组的最后一位,这边直接给结论:tmp=(tmp-s[tmp]+n)%n;,tmp是指最后一个数在数组b中的下标;
④最后就是优化问题了,因为k的大小是1e9,肯定会超时,而n是2e5,所以肯定需要根据数组长度进行优化:因为是按一个方向轮转,那么进行n次之后肯定会轮转回来,但又有一个问题,每次大轮转的轮转次数是不一定的(例如但a3=3时,我们轮转3次,当a2=2时,我们又只轮转2次,每个大轮转的次数和相加无法控制一定是n的倍数),我们无法控制,那么我们就可以找一个最坏的情况,也就是进行n个轮转次数,那么结果一定是n的倍数,那么我们只需要从n和k中取一个最小值即可: int cnt=min(k,n);

三.代码展示

//https://codeforces.com/contest/1894/problem/C
//
//
#include<iostream>
#include<algorithm>
#define int long long
using namespace std;

int s[200040];
void solve()
{
    int n,k;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        cin>>s[i];
    }
    int cnt=min(k,n);//没进行n次交换就会还原,但因为每次交换的次数不确定,所以最大的次数就是n次操作,这样无论每次操作多少次都是n的倍数
	int tmp=n;
    for(int i=0;i<cnt;i++)
    {
        if(s[tmp]>n)
        {
            cout<<"No"<<"\n";
            return;
        }
        else
        {
//			tmp+=n-s[tmp];//题解的写法,我不太能理解就换了一种写法
            tmp=(tmp-s[tmp]+n)%n;//下标的转换
        }
    }
    cout<<"Yes"<<"\n";
}

signed main()
{
    int t;
    cin>>t;
    while(t--)
    {
        solve();
    }
    return 0;
}

最后:

每日一题系列旨在养成刷题的习惯,所以对代码的解释并不会特别详细,但足够引导大家写出来,选的题目都不会特别难,但也不是特别简单,比较考验大家的基础和应用能力,我希望能够将这个系列一直写下去,也希望大家能够和我一起坚持每天写代码。

之后每个星期都会不定期更新codeforces和atcoder上的题目,想要学习算法的友友们千万别错过了,有什么疑问欢迎大家在评论区留言或者私信博主!

在这里送大家一句话:广积粮,缓称王!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

视频批量剪辑:AI智剪入门,轻松掌握智能剪辑技巧

在数字媒体时代&#xff0c;视频剪辑已经成为一项必备的技能。无论是为了工作需要&#xff0c;还是为了在社交媒体上分享生活&#xff0c;掌握视频剪辑技巧都能为我们的生活和工作带来很多便利。然而&#xff0c;对于初学者来说&#xff0c;视频剪辑可能是一项艰巨的任务。现在…

2023年11月上旬大模型新动向集锦

2023年11月上旬大模型新动向集锦 2023.11.10版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 1、GPT-4 Turbo在中文基准评测获八项满分 基于SuperCLUE通用大模型综合性中文测评基准&#xff0c;测评人员对GPT-4 Turbo进行了全方位测评。测…

十进制转换成2进制

十进制转换成2进制 参考链接&#xff1a;https://blog.csdn.net/qq_44755403/article/details/89279970?ops_request_misc%257B%2522request%255Fid%2522%253A%2522169960944816800227457337%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id…

2024 款:最新前端技术趋势

Hello&#xff0c;大家好&#xff0c;我是 Sunday。 上一次的时候聊了 那么些已经落后的前端开发技术 。但是光知道什么技术落后了是不够的&#xff0c;咱们还得知道 前端最新的技术趋势是什么。所以&#xff0c;今天这篇文章&#xff0c;咱们就来聊一聊&#xff0c;2023 最新…

递归和递推

文章目录 数楼梯题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 [NOIP2002 普及组] 过河卒题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 [NOIP2003 普及组] 栈题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 数楼梯 题目…

MySQL单表过大、主从模式、同步模式优化原理

文章目录 MYSQL单表数据达2000万性能严重下降?前言InnoDB索引数据结构B树 Sharding Sphere分库分表Sharding-JDBCSharding-JDBC的相关概念说明逻辑表广播表绑定表 Sharding-JDBC中的分片策略自动分片算法取模分片算法哈希取模分片算法分片容量范围标准分片算法行表达式分片算法…

i5、i9被取消,intel第一代酷睿Ultra CPU规格出炉

早在今年 6 月&#xff0c;Intel 就公布了即将带来全新一代酷睿 Ultra CPU。 纵观 Intel CPU 历史上的数次改名&#xff0c;几乎每次都代表了产品大变革&#xff0c;性能也是跟着跨越性地水涨船高。 而如今再次抛弃沿用长达十多年的酷睿 i 系改名为酷睿 Ultra&#xff0c;似乎…

kgm格式怎么转换为mp3?这样操作真的很简单!

kgm格式是一种酷狗音乐的音频格式&#xff0c;是酷狗为了保护音乐版权而专门创建的一种加密格式。这种格式只能在酷狗音乐播放器上面播放&#xff0c;那么如何把他转换成兼容性更高的MP3音频格式呢&#xff1f;下面介绍了三种常用的方法。 方法一&#xff1a;野葱视频转换器 1…

说说 Real DOM 和 Virtual DOM 的区别?优缺点?

一、是什么 Real DOM&#xff0c;真实 DOM&#xff0c;意思为文档对象模型&#xff0c;是一个结构化文本的抽象&#xff0c;在页面渲染出的每一个结点都是一个真实 DOM 结构&#xff0c;如下&#xff1a; Virtual Dom&#xff0c;本质上是以 JavaScript 对象形式存在的对 DOM …

[每周一更]-(第71期):DevOps 是什么?

Wiki的解释&#xff1a; DevOps&#xff08;Development和Operations的混成词&#xff09;是一种重视“软件开发人员&#xff08;Dev&#xff09;”和“IT运维技术人员&#xff08;Ops&#xff09;”之间沟通合作的文化、运动或惯例。 通过自动化“软件交付”和“架构变更”的…

AR工业眼镜:智能化生产新时代的引领者!!

科技飞速发展&#xff0c;人工智能与增强现实&#xff08;AR&#xff09;技术结合正在改变生活工作方式。AR工业眼镜在生产领域应用广泛&#xff0c;具有实时信息展示、智能导航定位、远程协作培训、智能安全监测等功能&#xff0c;提高生产效率、降低操作风险&#xff0c;为企…

网络安全(黑客)-高效自学

首先给大家简单介绍一下网络安全&#xff1a; 1.什么是网络安全&#xff1f; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、…

Netty入门指南之NIO Channel详解

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言Channe…

一天获4奖!大势智慧荣获2023测绘科学技术奖一等奖、地理信息科技进步奖一等奖、测绘科技创新优秀单位、地理信息产业最具成长性企业

11月9日&#xff0c;第一届中国测绘地理信息大会暨北斗应用博览会颁奖仪式在德清国际展览中心重磅揭幕。 大势智慧凭借《空天地多源融合实景三维建模关键技术及工具体系》项目斩获“2023年测绘科学技术奖一等奖” 凭借《大型复杂文化遗产多尺度精细化三维建模关键技术与应用》…

HBuilderX 运行Android App项目至雷电模拟器

一、下载安装HBuilderX HBuildeX官网 安装最新的正式版&#xff0c;或者点击历史版本查看更多版本&#xff1b;【ps&#xff1a;Alpha版本为开发版&#xff0c;功能更多&#xff0c;但是也不稳定&#xff0c;属于测试版本】 直接将压缩包解压&#xff0c;运行HBuildeX即可。 二…

供应原厂电流继电器 - HBDLX-21/3 整定电流范围0.1-1.09A AC220V

HBDLX系列型号&#xff1a; HBDLX-20/1零序过电压继电器&#xff1b;HBDLX-20/2零序过电压继电器 HBDLX-20/3零序过电压继电器&#xff1b;HBDLX-20/4零序过电压继电器 HBDLX-20/5零序过电压继电器&#xff1b;HBDLX-21/1零序过电压继电器 HBDLX-21/2零序过电压继电器&#xf…

清华陆向谦教授提到的纽约时报的一篇文章-探讨学历贬值

文章内容来自&#xff1a; https://www.nytimes.com/2017/11/01/education/edlife/stem-jobs-industry-careers.html By Steve Lohr Nov. 1, 2017 阅读简体中文版閱讀繁體中文版 The national priority in education can be summed up in a four-letter acronym: STEM. And…

【Git】GUI图形化界面的使用SSH协议IDEA集成Git

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Git的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一. GUI图形化界面的使用 1.使用Gui​ 2.常…

WPS的JS宏基础(四)——运算符

1、算术运算符 运算符是在编写代码时&#xff0c;最常用的符号。从本节课开始&#xff0c;运算符主要分为&#xff1a;算术运算符、连接运算符、比较运算符、逻辑运算符、赋值运算符等。我们将讲解这些常见的运算符&#xff0c;本节课讲解的是算术运算符。 符号作用加-减*乘/…

Windows系统Python语言环境下通过SDK进行动作捕捉数据传输

NOKOV度量动作捕捉系统可以与市面上主流的操作系统和编程语言实现通信。可以在Windows系统Python语言环境下通过SDK进行动作捕捉数据传输。 一、形影软件设置 1、切换到后处理模式 2、加载一段刚体数据 3、打开软件设置 4、将网卡地址选择为10.1.1.198 5、勾选上"使用SD…