Codeforces Round 889 (Div. 2)题解

目录

  • A. Dalton the Teacher
    • 题目大意
    • 题解思路
    • 代码
  • B. Longest Divisors Interval
    • 题目大意
    • 题解思路
    • 代码
  • C1. Dual (Easy Version)
    • 题目大意
    • 题解思路
    • 代码

A. Dalton the Teacher

题目链接
在这里插入图片描述

题目大意

Dalton是一个班级的老师,这个班级有 n n n个学生,分别使用1~n来代表这些学生。课室包含 n n n张椅子,编号也是对应1 ~ n,一开始学生 i i i坐在凳子 p i pi pi,我们保证 p 1 p1 p1, p 2 p2 p2,…, p n pn pn,是一个长度为 n n n排列组合序列。
如果他/她的号码与他/她的椅子号码不同,学生就会感到高兴。为了让他所有的学生都高兴,道尔顿可以反复执行以下操作:选择两个不同的学生,交换他们的椅子。让所有学生满意的最少动作数是多少?我们可以证明,在这个问题的约束下,有可能用有限的移动次数让所有的学生都满意。
长度为n的排列是由n个不同的整数以任意顺序从1到n组成的数组。例如,[2,3,1,5,4]是一个排列,但[1,2,2]不是一个排列(2在数组中出现两次),[1,3,4]也不是一个排列(n=3,但数组中有4)。

题解思路

题目要求我们尽可能少的步骤完成这个换换座位的操作,那我们只需要关注不符合位置的学生即可,只需要在输入的时候进行特殊判断即可,然后就是如何进行换位置的判断,如果是有两个人的位置不符合要求的话我们直接两个人的位置互换即可,比如说12,我们可以直接对换变成21,如果是三个人的情况我们就需要额外多进行一次操作比如说是123对换两次变成231。这上面的两种情况也分别对应奇数次数以及偶数次数的情况。

代码

#include<bits/stdc++.h>
using namespace std;
#define debug(x) cout<<#x<<" = "<<x<<endlint main()
{int t;cin>>t;while(t--){int n;scanf("%d",&n);int ans=0;for(int i=1;i<=n;++i){int shuru;scanf("%d",&shuru);if(shuru==i)ans++;}printf("%d\n",ans/2+ans%2);}return 0;
}

B. Longest Divisors Interval

题目链接
在这里插入图片描述

题目大意

给定一个正整数n,求一个正整数区间[l,r]的最大值,使得对于区间内的每一个i(即l≤i≤r), n是i的倍数。
给定两个整数l≤r,区间[l,r]的大小为r−l+1(即与属于该区间的整数个数重合)。

题解思路

如果一个数是区间[k+1,k+y]里面任意一个数的倍数,那么这个数一定是区间[1,y]里面任意一个数的倍数

代码

#include<bits/stdc++.h>
#include<math.h>
using namespace std;
#define debug(x) cout<<#x<<" = "<<x<<endlint main()
{int t;cin>>t;while(t--){long long n;scanf("%lld",&n);long long ans=0;//int m=(int)sqrt(n);for(long long i=1;i<=n;++i){if(n%i==0)ans++;else break;}printf("%lld\n",ans);}return 0;
}

C1. Dual (Easy Version)

题目链接

题目大意

给定一个数组a1,a2,…,anof整数(正,负或0)。您可以对该数组执行多个操作(可能为0操作)。
在一个操作中,你选择i,j(1≤i,j≤n,它们可以相等),并设置ai:=ai+aj(即(在ai后面加上aj)。
在最多50次操作中使数组不递减(即当1≤i≤n - 1时,ai≤ai+1)。您不需要最小化操作的数量。

题解思路

这道题目给的次数比较大,我们可以分类来进行处理,如果这里面的数字存在正整数,那么肯定可以把这些数字转化为正整数,那么我们只需要后面的数加前面的数就肯定能够符合条件,如果所有的数字都是负数,那我们只需要前面的数字加上后面的数字也肯定能够满足条件。还有一种情况全部都是0,那就直接输出0即可。

代码

#include<bits/stdc++.h>
using namespace std;
#define debug(x) cout<<#x<<" = "<<x<<endlint main()
{int t;cin>>t;int cnt;while(t--){int n;scanf("%d",&n);int arr[30]{0};int maxzhi=-30,maxweizhi;int minzhi=+30,minweizhi;cnt=0;int a[50]{0};int b[50]{0};for(int i=1;i<=n;++i){scanf("%d",&arr[i]);if(arr[i]>maxzhi){maxzhi=arr[i];maxweizhi=i;}if(arr[i]<minzhi){minzhi=arr[i];minweizhi=i;}}if(maxzhi>0){while(maxzhi<20){maxzhi=2*maxzhi;arr[maxweizhi]*=2;a[cnt]=maxweizhi;b[cnt]=a[cnt];cnt++;}for(int i=1;i<=n;++i){if(arr[i]<0){arr[i]+=maxzhi;a[cnt]=i;b[cnt]=maxweizhi;cnt++;}}for(int i=2;i<=n;++i){if(arr[i]<arr[i-1]){arr[i]+=arr[i-1];//printf("%d %d\n",i,i-1);a[cnt]=i;b[cnt]=i-1;cnt++;}}}else if(minzhi<0){while(minzhi>-20){minzhi+=minzhi;a[cnt]=minweizhi;b[cnt]=minweizhi;cnt++;}for(int i=n-1;i>=1;--i){if(arr[i]>arr[i+1]){while(arr[i]>arr[i+1]){arr[i]+=arr[i+1];a[cnt]=i;b[cnt]=i+1;cnt++;}}}}printf("%d\n",cnt);for(int i=0;i<cnt;++i){printf("%d %d\n",a[i],b[i]);}}return 0;
}

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

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

相关文章

Kotlin知识点

Kotlin 是 Google 推荐的用于创建新 Android 应用的语言。使用 Kotlin&#xff0c;可以花更短的时间编写出更好的 Android 应用。 基础 Kotlin 程序必须具有主函数&#xff0c;这是 Kotlin 编译器在代码中开始编译的特定位置。主函数是程序的入口点&#xff0c;或者说是起点。…

【C++】类和对象 - 上

目录 1. 面向过程和面向对象初步认识2. 类的引入3. 类的定义4. 类的访问限定符及封装4.1 访问限定符4.2 封装 5. 类的作用域6. 类的实例化7. 类对象模型7.1 如何计算类的大小7.2 类对象的存储方式猜测7.3 结构体内存对齐规则 8. this指针8.1 引出8.2 this指针的特性 总结 1. 面…

打开域名跳转其他网站,官网被黑解决方案(Linux)

某天打开网站&#xff0c;发现进入首页&#xff0c;马上挑战到其他赌博网站。 事不宜迟&#xff0c;不能让客户发现&#xff0c;得马上解决 我的网站跳转到这个域名了 例如网站跳转到 k77.cc 就在你们部署的代码的当前文件夹下面&#xff0c;执行下如下命令 find -type …

Electron 系统通知 Notification 实践指南

系统通知是桌面应用的常见功能&#xff0c;用于给用户发送提醒&#xff08;刷下存在感 &#x1f642;&#xff09;&#xff0c;还能帮定点击事件以便后续的操作。 Electron 自带通知模块&#xff0c;下方代码是一个简单的示例 const { Notification } require(electron)cons…

电脑维护指南:让你的战友始终高效稳定

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

【Ansible】

目录 一、Ansible简介二、ansible 环境安装部署1、管理端安装 ansible 三、ansible 命令行模块&#xff08;重点&#xff09;1&#xff0e;command 模块2&#xff0e;shell 模块3、cron 模块4&#xff0e;user 模块5&#xff0e;group 模块6&#xff0e;copy 模块&#xff08;重…

【论文精读】Self-Attentive Assocative Memory,2020

目录 1 引言2 Outer product attention (OPA)3 Self-attentive Associative Memory (SAM)4 SAM-based Two-Memory Model (STM)4.1 M i M^i Mi写操作4.2 M r M^r Mr读操作4.3 M i M^i Mi读操作和 M r M^r Mr写操作过程4.4 用 M r M^r Mr实现item转移4.5 模型输出 o t o_t ot​…

c语言内存函数的深度解析

本章对 memcpy&#xff0c;memmove&#xff0c;memcmp 三个函数进行详解和模拟实现&#xff1b; 本章重点&#xff1a;3个常见内存函数的使用方法及注意事项并学会模拟实现&#xff1b; 如果您觉得文章不错&#xff0c;期待你的一键三连哦&#xff0c;你的鼓励是我创作的动力…

el-table数据处理

在写表格时遇到&#xff0c;后端返回的数据是对象&#xff0c;并且缺少字段 1.每一条数据加上 一个字段 2.将对象转成数组 以下是数据 {"groupA": {"groupName": null,"orgName": null,"orgId": null,"allPeoper": &quo…

IntersectionObserver实现小程序长列表优化

IntersectionObserver实现小程序长列表优化 关于 IntersectionObserver 思路 这里以一屏数据为单位【一个分页的10条数据&#xff0c;最好大于视口高度】&#xff0c; 监听每一屏数据和视口的相交比例&#xff0c;即用户能不能看到它 只将可视范围的数据渲染到页面上&#x…

Oracle 19c 报ORA-704 ORA-01555故障处理---惜分飞

异常断电导致数据库无法启动,尝试对数据文件进行recover操作,报ORA-00283 ORA-00742 ORA-00312错误,由于redo写丢失无法正常应用 D:\check_db>sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期日 7月 30 07:49:19 2023 Version 19.3.0.0.0 Copyrig…

利用读时建模等数据分析能力,实现网络安全态势感知的落地

摘要&#xff1a;本文提出一种基于鸿鹄数据平台的网络安全态势感知系统&#xff0c;系统借助鸿鹄数据平台读时建模、时序处理、数据搜索等高效灵活的超大数据存储和分析处理能力&#xff0c;支持海量大数据存储、分类、统计到数据分析、关联、预测、判断的网络安全态势感知能力…

CentOS7系统Nvidia Docker容器基于TensorFlow2.12测试GPU

CentOS7系统Nvidia Docker容器基于TensorFlow1.15测试GPU 参考我的另一篇博客 1. 安装NVIDIA-Docker的Tensorflow2.12.0版本 1. 版本依赖对应关系&#xff1a;从源代码构建 | TensorFlow GPU 版本Python 版本编译器构建工具cuDNNCUDAtensorflow-2.6.03.6-3.9GCC 7.3.1Ba…

beego通过gorm访问mysql数据库

一、下载golang 二、解压下载包到C盘 三、配置golang系统环境变量 四、进入新建的工作目录C:\project下载并安装beego 五、将新生成的bee.exe所在的路径c:\project\bin加入到系统变量path里面 六、下载并安装mysql 例如在上图中&#xff0c; 选“No thanks,just start my down…

如何在3ds max中创建可用于真人场景的巨型机器人:第 3 部分

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 创建腿部装备 步骤 1 打开 3ds Max。 打开在本教程最后一部分中保存的文件。 打开 3ds Max 步骤 2 转到创建> 系统并单击骨骼。 创建>系统 步骤 3 为的 侧视口中的腿&#xff0c;如下图所示…

Java 程序员:本是为了跳槽刷完 1000 道真题,想不到被老板知道直接给我升职

同事&#xff1a;前阵子听说你要跳槽&#xff0c;现在准备得怎么样啊&#xff1f; 程序员 T&#xff1a;不跳了 同事&#xff1a;啊&#xff1f;为什么&#xff1f; 程序员 T&#xff1a;涨薪了呗&#xff1f; 同事&#xff1a;真的吗&#xff1f;涨了多少&#xff1f;你自…

R语言无法调用stats.dll的问题解决方案[补充]

写在前面 在去年10月份&#xff0c;出过一起关于R语言无法调用stats.dll的问题解决方案,今天&#xff08;你看到后是昨天&#xff09;不知道为什么&#xff0c;安装包&#xff0c;一直安装不了&#xff0c;真的是炸裂了。后面再次把R与Rstuido升级。说实话&#xff0c;我是真不…

C语言指针详解

C语言指针详解 字符指针1.如何定义2.类型和指向的内容3.代码例子 指针数组1.如何定义2.类型和内容 数组指针1.如何定义2.类型和指向类型3.数组名vs&数组名数组指针运用 数组参数&指针参数一维数组传参二维数组传参一级指针传参二级指针传参 函数指针1.如何定义2.类型和…

Java ~ Collection/Executor ~ DelayQueue【总结】

前言 文章 相关系列&#xff1a;《Java ~ Collection【目录】》&#xff08;持续更新&#xff09;相关系列&#xff1a;《Java ~ Executor【目录】》&#xff08;持续更新&#xff09;相关系列&#xff1a;《Java ~ Collection/Executor ~ DelayQueue【源码】》&#xff08;学…

Elasticsearch笔记

迈向光明之路&#xff0c;必定荆棘丛生。 文章目录 一、Elasticsearch概述二、初识ES倒排索引1. 正向索引2. 倒排索引 三、ES环境搭建1. 安装单机版ES2. 安装Kibana3. 安装ik分词器3.1 在线安装ik插件3.2.离线安装ik插件&#xff08;推荐方式&#xff09;3.3 自定义词典 四、ES…