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

news2024/11/28 2:33:49

🌏博客主页: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上的题目,想要学习算法的友友们千万别错过了,有什么疑问欢迎大家在评论区留言或者私信博主!

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

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

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

相关文章

(动手学习深度学习)第7章 残差网络---ResNet

目录 ResNet总结 ResNet代码实现ResNet的梯度计算 ResNet 总结 残差块使得很深的网络更加容易训练 甚至可以训练一千层的网络 残差网络对随后的深层神经网络设计产生了深远影响&#xff0c;无论是卷积类网络还是全连接类网络。 ResNet代码实现 导入相关库 import torch fro…

K8S容器内安装cur/telnet命令(Alpine Linux离线环境安装curl/telnet或其他工具)

背景 需求&#xff1a; 微服务的基础是镜像&#xff0c;通常在最小化的Linux镜像中安装jdk&#xff0c;然后运行编译好的java程序。将镜像运行到K8S上就得到了微服务Pod&#xff0c;Pod通常使用安装K8S时配置的私有网段&#xff0c;与宿主机不同。很多时候需要排查从Pod网段内…

概念解析 |移动群智感知:智能设备时代的数据革命

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:移动群智感知(Mobile Crowd Sensing, MCS)。 移动群智感知:智能设备时代的数据革命 移动群智感知示意图 背景介绍 随着智能手机和物联网设备的普及,我们进入了一个全新的…

《未来之路:技术探索与梦想的追逐》

创作纪念日 日期&#xff1a;2023年07月05日文章标题&#xff1a;《从零开始-与大语言模型对话学技术-gradio篇&#xff08;1&#xff09;》成为创作者第128天 在这个平凡的一天&#xff0c;我撰写了自己的第一篇技术博客&#xff0c;题为《从零开始-与大语言模型对话学技术-…

【Docker】iptables命令的使用

iptables是一个非常强大的Linux防火墙工具&#xff0c;你可以使用它来控制网络流量的访问和转发。 前面已经学习了iptables的基本原理&#xff0c;四表五链的基本概念&#xff0c;也已经安装好了iptables&#xff0c;下面我们主要学习iptables命令的基本使用。 可以使用iptable…

Redis持久化之RDB和AOF操作

文章目录 前言一、什么是RDB&#xff1f;1.与持久化相关的一些配置2.触发机制3.如何恢复rdb文件4.优点5.缺点 二、什么是AOF&#xff1f;1.重写规则说明2.优点3.缺点 总结 前言 无论是面试还是工作&#xff0c;持久化都是重点! Redis是内存数据库&#xff0c;如果不将内存中的…

阿里云AIGC小说生成【必得京东卡】

任务步骤 此文真实可靠不做虚假宣传&#xff0c;绝对真实&#xff0c;可截图为证。 领取任务 链接&#xff08;复制到wx打开&#xff09;&#xff1a;#小程序://ITKOL/1jw4TX4ZEhykWJd 教程实践 打开函数计算控制台 应用->创建应用->人工智能->通义千问 AI 助手-…

【字符串】【双指针翻转字符串+快慢指针】Leetcode 151 反转字符串中单词【好】

【字符串】【双指针翻转字符串快慢指针】Leetcode 151 反转字符串中单词 解法1 双指针翻转字符串快慢指针更新数组大小 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- ---------------&#x1f388;&#x1f388;解答链接…

矩阵起源荣获第八届“创客中国”深圳市中小企业创新创业大赛三等奖

近日&#xff0c;2023年第八届“创客中国”深圳市中小企业创新创业大赛圆满落下帷幕&#xff0c;矩阵起源&#xff08;深圳&#xff09;信息科技有限公司凭借项目”MatrixOne 新一代超融合异构云原生数据库”荣获企业组三等奖。 本届大赛由深圳市工业和信息化局、深圳市中小企业…

Blazor之Router入门

前言&#xff1a;博主文章仅用于学习、研究和交流目的&#xff0c;不足和错误之处在所难免&#xff0c;希望大家能够批评指出&#xff0c;博主核实后马上更改。 概述&#xff1a; Router 组件允许路由到 Razor 组件。 Router 组件在 App 组件 (App.razor) 中使用。编译带有 p…

鲁大师电动车智能化测评报告第二十三期:实测续航95km,九号Q90兼顾个性与实用

鲁大师第二十三期智能化电动车测评排行榜数据来源于鲁大师智慧实验室,测评的车型均为市面上主流品牌的主流车型。截止目前,鲁大师智能化电动车测评的车型高达130余台,且还在不断增加和丰富中。 一、测评依据 鲁大师电动车智能化测评体系包含车辆的状态采集与管理硬件系统、车辆…

【MySQL】手把手教你centos7下载MySQL

centos7下载MySQL 前言正式开始卸载不需要的环境&#xff08;如果你之前没有安装过数据库相关的东西可以跳过&#xff09;下载mysql登录mysql登陆⽅法⼀【不⾏就下⼀个】登陆⽅法⼆【不⾏就下⼀个】登录方式三 前言 安装和卸载MySQL都用系统的root权限&#xff0c;更方便一点&…

pyqt5学习-01 UI界面创建以及生成python代码

前提 环境搭建 打开designer 选择创建主窗体&#xff0c;拖入一个按钮 保存主窗体UI文件为firstMainWin.ui 将UI文件转化为python文件 # 可以把E:\Python\envs\pyqt5stu\Scripts\pyuic5.exe添加到环境变量中 E:\Python\envs\pyqt5stu\Scripts\pyuic5.exe -o firstMainWin.…

新零售时代,传统便利店如何转型?

在零售批发业&#xff0c;如何降低各环节成本、提高业务运转效率、更科学地了解客户服务客户&#xff0c;是每家企业在激烈竞争中需要思考的课题。 对零售批发企业来说&#xff0c;这些问题或许由来已久&#xff1a; &#xff08;1&#xff09;如何对各岗位的员工进行科学的考…

【nginx】使用arthas协助定位 nginx 499

看到这个499 到服务端 通过arthas查看 并没有耗时很长的 心跳接口 看都是很快的 通过 monitor 命令 通过watch 定位看到这个现象&#xff1a; watch -x 3 在nginx配置文件中添加 在nginx 中查看 没有499 了 再看nginx 中有存在 401 这个是业务问题 剩下的是检测器同事定位…

Flink之SQL查询操作

SQL查询 基本SELECT查询生成测试数据WITHWHEREDISTINCTORDER BYLIMIT 窗口函数概述创建数据表滚动窗口 TUMBLE滑动窗口 HOP累积窗口 CUMULATE窗口偏移 聚合窗口聚合分组聚合OVER聚合 TOP-N普通Top-N窗口Top-N 联结Join查询内部等连接外部等连接间隔联结 集合操作UNION 和 UNION…

内存对齐规则

前言 求结构体的大小是很热门的考点&#xff0c;无论你是学C还是C&#xff0c;都会遇到这样的问题&#xff0c;在面试中也很受欢迎&#xff0c;所以我们先思考这样一个问题&#xff1a;计算结构体&#xff0c;联合体和类的大小应该怎么去计算呢&#xff1f;我们知道&#xff0c…

105.am40刷机(linux)折腾记1-前期的准备工作1

前段时间在某鱼上逛的时候&#xff0c;发现一款3399的盒子只要150大洋&#xff0c;内心就开始澎拜&#xff0c;一激动就下手了3台&#xff0c;花了450大洋&#xff08;现在想想&#xff0c;心都碎了一地&#xff09;。 然后自己又来来回回折腾了几天&#xff0c;目前能跑上fire…

C# 异步日志记录类,方便下次使用,不用重复造轮子

先定义接口类&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 异常 {internal interface ILog{Task WriteErrorLog(string message);Task WriteInfoLog(string message);Task W…

高级运维学习(十四)Zabbix监控(一)

一 监控概述 1 监控的目的 &#xff08;1&#xff09;报告系统运行状况 每一部分必须同时监控内容包括吞吐量、反应时间、使用率等 &#xff08;2&#xff09;提前发现问题 进行服务器性能调整前&#xff0c;知道调整什么找出系统的瓶颈在什么地方 2 监控的资源类别 …