UPC--换座位(一道没想到暴力就能过的题)

2023-10-26

题目描述
聪聪和同学们正在玩这样一个换座位的游戏:班上共有2n个少先队员,开始时每个少先队员坐在自己的板凳上排成一队,由聪聪开始击鼓,每次击鼓开始时,前n个同学坐到第2、4、…、2n个板凳上,后n个同学坐到第1、3、…、2n-1个板凳上,击鼓结束时坐错或者还没有坐到对应板凳上的同学就要接受惩罚——表演一个节目,并按规定坐好。聪聪不断的击鼓然后停顿后又击鼓…,同学们都觉得这个游戏很好玩,但是当游戏结束时,同学们傻眼了,由于每位同学的板凳都差不多,他们找不到自己的板凳了。
而聪聪这时反应特别快,他说经过一定次数的换座位,每位同学一定能回到自己的板凳的。那么这个次数最少是多少呢?你会计算吗?
输入
共一行,一个正整数n(1≤n≤10000)。
输出
共一行,一个正整数,表示每位同学都回到自己板凳的最少换座位次数。
样例输入 Copy
10
样例输出 Copy
6

我本人是用暴力的方法解决的这道题,然后开了一个辅助的数组,在操作完之后将辅助数组的值复制到原数组,然后计数,直到换回到原来的情况

#include <bits/stdc++.h>
#include <algorithm>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;
#define wuyt main
typedef long long ll;
#define HEAP(...) priority_queue<__VA_ARGS__ >
#define heap(...) priority_queue<__VA_ARGS__,vector<__VA_ARGS__ >,greater<__VA_ARGS__ > >
template<class T> inline T min(T &x,const T &y){return x>y?y:x;}
template<class T> inline T max(T &x,const T &y){return x<y?y:x;}
///#define getchar()(p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2) ? EOF : *p1++)
///char buf[(1 << 21) + 1], *p1 = buf, *p2 = buf;
ll read(){ll c = getchar(),Nig = 1,x = 0;while(!isdigit(c) && c!='-')c = getchar();
if(c == '-')Nig = -1,c = getchar();
while(isdigit(c))x = ((x<<1) + (x<<3)) + (c^'0'),c = getchar();
return Nig*x;}
#define read read()
const ll inf = 1e15;
const int maxn = 2e5 + 7;
const int mod = 1e9 + 7;
#define start int wuyt()
#define end return 0
ll num[20008];
ll num2[20008];
ll ans;
int n;
ll a,b;
char ss[50];
int pos;
bool judge(ll num[]){
    for(int i=1;i<=2*n;i++){
        if(i!=num[i])
            return false;
    }
    return true;
}
void work(ll num[],ll num2[]){
    int cnt=1;
    for(int i=2*n;i>n;i--){
        num2[i-cnt]=num[i];
        cnt++;
    }
    for(int i=1;i<=n;i++){
        num2[2*i]=num[i];
    }
    for(int i=1;i<=2*n;i++) num[i]=num2[i];
}
int main()
{
    n=read;
    for(int i=1;i<=2*n;i++){
        num[i]=i;
    }
    ans=1;
    int cnt=1;
    for(int i=2*n;i>n;i--){
        num2[i-cnt]=num[i];
        cnt++;
    }
    for(int i=1;i<=n;i++){
        num2[2*i]=num[i];
    }
    for(int i=1;i<=2*n;i++) num[i]=num2[i];
    ///for(int i=1;i<=2*n;i++) printf("%lld ",num[i]);
    while(judge(num)==0){
        int cnt=1;
        for(int i=2*n;i>n;i--){
            num2[i-cnt]=num[i];
            cnt++;
        }
        for(int i=1;i<=n;i++){
            num2[2*i]=num[i];
        }
        for(int i=1;i<=2*n;i++) num[i]=num2[i];
        ans++;
    }
    cout<<ans<<endl;
    return 0;
}

之前为了测试才没将while循环里面的改成调用函数,改为调用函数会更简短

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UPC--换座位(一道没想到暴力就能过的题) 的相关文章

  • ILRuntime 第一集

    一 ILRuntime的介绍 IOS无法热更的原因 苹果AppStore的审核准则中 命令禁止应用程序分配具有可执行权限的内存 带有JT功能的的脚本虚拟机无法运行 无法加载动态链接库 安卓Google Play强制64位之后也必须使用IL2
  • 有什么让你相见恨晚的 MacBook 神器?

    给大家推荐一些都是免费且能极大地提高 Mac 使用体验的小工具吧 快速启动工具 Manico 如果你和派君一样喜欢用键盘来切换应用 那么 Manico 就是你心目中的神器了 Manico 的使用非常简单 安装打开后 按下 Option 键
  • libevent源码学习(4):线程锁、条件变量(二)(调试锁)

    目录 EVUTIL ASSERT宏 开启调试锁 调试锁结构 调试锁函数 debug lock alloc debug lock free debug lock lock 加锁检测 debug lock unlock 解锁检测 调试锁下的条件
  • Java intern函数详解

    先看一个例子如果你会了那这篇文章你没必要看了 如果不会那请看下去 你一定会有收获 String s new String hello String str1 s world String str3 helloworld system out
  • Linux安装sftp服务

    处理步骤 1 关闭防火墙和selinux root localhost systemctl status firewalld firewalld service firewalld dynamic firewall daemon Loade
  • PN结图示(全网都不舍得放的图片)

    这是从必应随手搜到的 PN结的图示 很直观的可以让人理解 P 和 N 在术语里的意思 而这是从国内百度搜的国人给的图示 说实话我搜了N年 愣是没找到跟图上一样的 咱也不懂为什么 PN结图示 全网都不舍得放的图片 这里会涉及到两个基本术语 正
  • scriptmanager控件使用

    今天用到scriptmanager 顺便整理一下 网络资料 一 控件概述 ScriptManager控件包括在ASP NET 2 0 AJAX Extensions中 它用来处理页面上的所有组件以及页面局部更新 生成相关的客户端代理脚本以便
  • mysql sql 除法运算_SQL语句怎么表示除法运算?

    展开全部 select case when 除数 0 then 0 else 被除数 除数 end 一 基本概念 SQL语言 是结构化查询语言 Structured Query Language 的简称 e69da5e6ba90626169
  • 线性光耦原理与电路设计[HCNR200,HCNR201]

    1 线形光耦介绍 光隔离是一种很常用的信号隔离形式 常用光耦器件及其外围电路组成 由于光耦电路简单 在数字隔离电路或数据传输电路中常常用到 如UART协议的20mA电流环 对于模拟信号 光耦因为输入输出的线形较差 并且随温度变化较大 限制了
  • python编程题

    7 1 jmu Java Python 统计一段文字中的单词个数并按单词的字母顺序排序后输出 10 分 现需要统计若干段文字 英文 中的不同单词数量 如果不同的单词数量不超过10个 则将所有单词输出 按字母顺序 否则输出前10个单词 注1
  • 【BUUCTF】Web题目 WriteUp

    Web类题目 Basic 极客大挑战 Secret File F12查看源码 发现一个网址 点击查看 进入后 发现转跳连接action php 点击后显示查阅结束 考虑使用burp抓包 直接查看secr3t php 发现flag php 但
  • 如何在 CentOS 里下载 RPM 包及其所有依赖包

    https blog csdn net linuxnews article details 53244315 方法一 利用 Downloadonly 插件下载 RPM 软件包及其所有依赖包 默认情况下 这个命令将会下载并把软件包保存到 va
  • 如何解决深度学习中的过拟合问题?

    在深度学习中 过拟合是一个常见的问题 它指的是模型在训练集上表现良好 但在测试集或新样本上表现较差的现象 过拟合的出现主要是由于模型过度拟合训练数据 过多地记住了训练集中的噪声和细节 导致模型在泛化到未见过的数据时失效 然而 我们可以采取一

随机推荐

  • SpringMVC和SpringBoot接收复杂集合参数,集合对象

    在SpringMVC和SpringBoot中 我们有这样一个场景 就是接受前端复杂的对象数组 或者多个数组 这是我们可以用 RequestBody注解 来解析请求体中的数据 但是值得注意的是在GET请求是不能进行该种方式的操作 因为GET请
  • Kali实现msfvenom在Windows和Linux靶机下后门漏洞

    项目场景 Kali实现msfvenom在Windows和Linux靶机下后门漏洞 情景复现 实验环境 Kali Debian 6 64位 Windows10 Centos7 环境 版本 kali Debian 6 64位 Windows w
  • 五十二.L1-063 吃鱼还是吃肉

    include
  • Qt子线程控制主界面UI控件

    在子线程里控制主界面的UI控件有两种方法 第一种是在子线程中发送信号 然后在主线程中去更新 第二种方法是在子线程中创建同样的对象 然后把主界面中控件的指针赋给创建的对象 第一种方法在此不做实例展示 在此通过一个简单的例子展示第二种方法 下面
  • qt操作文件进行读写操作

    一 加上头文件 include
  • electron自动更新版本electron-updater

    首先来看效果图 打包electron生成新的exe安装包 npm run dist 使用simplehttpserver开启存放打包好的exe安装包与yml文件的本地服务 打包目录里有这两个文件 安装simplehttpserver npm
  • springboot maven配置log4j以及Idea控制台根据等级配置颜色

    目录 效果 pom依赖 log4j properties LoggerUtil CCPRestSDK class 测试 console颜色 效果 废话不多说 直接放代码 pom依赖
  • Eclipse安装中文简体语言包(官方下载安装教程)

    目录 方法一 1 下载中文语言包 2 将文件下载后 解压 方法二 获得最新语言包网址 点击获得 配置JAVA HOME方法 一些历史版本的语言包网址 补充2021 3 7 语言包官方下载链接汇总 浏览器打开 长期有效 更新2021 3 4
  • mybatis generator插件系列--注释插件 (为实体类生成数据库字段注释)

    我们都知道mybatis generator自动生成的注释没什么实际作用 而且还增加了代码量 如果能将注释从数据库中捞取到 不仅能很大程度上增加代码的可读性 而且减少了后期手动加注释的工作量 1 首先定义注释生成插件 MyCommentGe
  • 后台管理系统-前端Vue项目搭建

    后台管理系统简介 从本章节开始我们将逐渐完成一套后台管理系统的搭建过程 前端技术 Vue3 2 后端搭建使用Spring Cloud Alibaba 1 Vue项目初始化 我们使用Vue ui 来初始化项目 1 1 使用vue ui创建项目
  • DOTA航拍图像数据集,免费资源下载35G遥感数据集

    DOTA Dataset遥感数据集下载 挂VPN会进的更快哦 下载链接最底下 DOTA Dataset A Large scale Dataset for Object DeTection in Aerial Images是用于航拍图像中目
  • 使用hexo+github搭建个人博客

    摘要 本文讲述如何使用hexo github搭建属于自己的个人博客 并且配置相应的主题使自己的博客更加美观 1 概念介绍 博客这东西大家应该都不陌生 网上有很多各式各样的博客 很多人也萌生了搭建自己的博客的想法 但是奈何技术有限 前后端技术
  • PyQt5 窗口自适应大小

    用pyqt5 Qt Designer设计界面时 希望窗口各控件可以随着鼠标拖动自适应的改变大小 一直没有找到方法 百度搜索了一圈 都说是要设置sizePolicy 将其Policy改为expanding即可 事实上99 的帖子都是抄来抄着
  • 全国行政区划下载(高德)

    高德地图API提供的行政区划查询 可以获取到行政区域的区号 城市编码 中心点 边界 下辖区域的详细信息 基于该工具进行扩展 对边界数据做转换处理 保存为GeoJson格式文件 方便使用 并且还可以选择转为WGS84坐标 下载地址 CLICK
  • 【C++】解析this指针

    一个类可以有多个对象 怎么能保证引用的是所指定的对象的数据成员呢 在每一个成员函数中都包含一个特殊的指针 这个指针的名字是固定的 即this 它是指向本类对象的一个指针 他的值是当前被调用的成员函数所在对象的起始地址 举例 include
  • 字符串的排列(全排列)——Java、回溯法

    题目描述 输入一个字符串 按字典序打印出该字符串中字符的所有排列 例如输入字符串abc 则打印出由字符a b c所能排列出来的所有字符串abc acb bac bca cab和cba 输入描述 输入一个字符串 长度不超过9 可能有字符重复
  • 奈奎斯特采样定理-为什么采样率需要时被测信号最高频率的两倍

    奈奎斯特采样定理 采样定理在1928年由美国电信工程师H 奈奎斯特首先提出来的 因此称为奈奎斯特采样定理 1933年由苏联工程师科捷利尼科夫首次用公式严格地表述这一定理 因此在苏联文献中称为科捷利尼科夫采样定理 1948年信息论的创始人C
  • MySQL数据库与SQL语言的规范

    文章中所有操作均是在 MySQL 5 7 版本下进行的 SQL语言 结构化查询语言 Structured Query Language 简称SQL 是一种特殊目的的编程语言 是一种数据库查询和程序设计语言 用于存取数据以及查询 更新和管理关
  • 数值类型翻转教学设计

    第1关 计算边长为整数的正方形面积 任务描述 本关任务 编写一个能计算正方形面积的小程序 相关知识 为了完成本关任务 你需要掌握 1 输入函数 2 字符串转整数 3 数值运算 4 输出函数 第2关 计算边长为浮点数的正方形面积 任务描述 本
  • UPC--换座位(一道没想到暴力就能过的题)

    题目描述 聪聪和同学们正在玩这样一个换座位的游戏 班上共有2n个少先队员 开始时每个少先队员坐在自己的板凳上排成一队 由聪聪开始击鼓 每次击鼓开始时 前n个同学坐到第2 4 2n个板凳上 后n个同学坐到第1 3 2n 1个板凳上 击鼓结束时