浙江农林大学蓝桥杯程序设计竞赛校选拔赛 E-谁是天选之人

2023-11-16

众所周知下棋是一个运气游戏,不过好像也是有规律可循的。

Graceful smiling cookies给它的n个棋子标序号,他决定以这些序号决定谁是天选。

最开始每个棋子标号都是0.

它要进行m次标序号。

  第i次标序号,它会将第(i X a+b)%n +1个棋子和第(i X b + a)%n +1个棋子之间的棋子都标上序号i。我会告诉你a和b的值,你可以告诉我最后每个棋子的颜色吗?

输入描述:

一行四个整数 1=<n<=1e6 ,  1=<m<=1e7 ,  a  ,  b

保证:1<=m*a+b, m*b+a<=int最大值

输出描述:

n行,每行表示第i个棋子的标号

示例1

输入

复制

3 2 1 3

输出

复制

0
2
2

解题思路: 

 并查集,后面找到的区间肯定会把前面的给覆盖掉,所以我们倒着循环,遇到已经改变过的部分不改变。用数组记录当前区段最右边改变的点,从这个部位开始变化。

#include<bits/stdc++.h>
using namespace std; 
const int MAXN = 1e6 + 5;
int fa[MAXN], A[MAXN];
int get(int x)
{
    if (fa[x] == x) return x;
    return fa[x] = get(fa[x]);
}
 
int main(void) 
{
    int n, m, a, b;
    cin >> n >> m >> a >> b;
    for (int i = 1; i <= n + 1; ++i) 
    {
        fa[i] = i;
    }
    for (int i = m; i > 0; --i) 
    {
        int l = (i * a + b) % n + 1;
        int r = (i * b + a) % n + 1;
        if (l > r) swap(l, r);
        int x = get(l);
        while (x <= r) 
       {
            fa[x] = x + 1;
            A[x] = i;
            x = get(x);
        }
    }
    for (int i = 0; i < n; ++i) 
    {
        printf("%d\n", A[i + 1]);
    }
 
    return 0;
}


 

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

浙江农林大学蓝桥杯程序设计竞赛校选拔赛 E-谁是天选之人 的相关文章

  • 如何在 opencv 3.0 Beta 中从文件读取 UMat?

    我想用UMat所以我的代码可以使用 OpenCL OpenCV 3 0 0 Beta 在 GPU 和 CPU 上运行 但我找不到将图像文件读入的方法UMat或转换一个Mat to UMat 如何将图像读入UMat 样品用于Mat to UM
  • 不同翻译单元中字符串文字的内存地址是否相同?

    假设我们有以下 cpp 文件 include
  • 不要覆盖 Azure Blob 存储

    我有一种将文件添加到 Azure Blob 存储的方法 问题是我试图指定一个条件 在该条件下它不会覆盖 blob 而只是添加到其中 我正在尝试使用参数访问条件 但是 VS 说这个方法不能采用两个参数 async void archiveNe
  • 如何使用平台调用编组 void*

    我需要从 dll 中包含的 C api 调用函数 函数原型如下 int func char name void value 其中指针值的内容可以引用依赖于传递的名称的任何类型 我不确定如何设置 Dll 输入端口以正确编组此 void 我一直
  • 从 C# 访问 COM vtable

    C 中有没有办法访问 COM 对象的虚拟方法表以获取函数的地址 经过大量搜索和拼凑不同的部分解决方案后 我弄清楚了如何做到这一点 首先 您需要为您尝试访问的对象定义 COM 组件类 ComImport Guid InterfaceType
  • 使用 C# 启动 Outlook

    我可以让 C 在代码中启动 Outlook 吗 在 VB6 中 我们使用对象 Outlook Application 并编写 Set oOutlook CreateObject Outlook Application Set oNameSp
  • std::string substr 方法问题

    你好 我正在写这个方法 我希望它从给定缓冲区中提取给定位置的一部分 我有一个像这样的字符串something one something two我想要得到 一个 这是我的想法 static std string Utils getHeade
  • std::istringstream >> 使奇怪的行为加倍

    下面的代码打印0在 mac osx 上使用 clang 其他地方都会打印5 clang https ideone com mVgpzS gcc https ideone com oZ0hy6 include
  • C#:如何确定坐标是否在美国大陆?

    我正在获取坐标 纬度 经度 我想检查这些坐标是否位于美国大陆 有没有一种简单的方法可以在 C 中实现 我可以将坐标转换为 MGRS 或 UTM 谢谢 哇哦 他们专门为你准备了 http econym org uk gmap states x
  • 如何转换 UTF-8 <-> UTF16 可移植

    有没有一种简单 可移植的方法 至少是 win32 linux 将 UTF 16 转换为 UTF 8 并返回 最好使用升压 谢谢你的帮助 托比亚斯 Both libiconv http www gnu org software libicon
  • 如何将8字节的十六进制数输入到char数组中?

    我想生成以以下开头的十六进制数字序列07060504003020100 下一个数字是0f0e0d0c0b0a0908等等按这个顺序 当我使用unsigned long long int并输出数据的前4位 这意味着0被截断 它打印706050
  • 在 C++ 中运行 python [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个用 C 编写的应用程序和一个测试系统 也是用 C 编写的 测试系统非常复杂并且很难改变 我只想做一些小的改变 我的班级是这样的
  • 我们可以向 ServicePointManager.SecurityProtocol 添加四个协议吗?

    我想支持从 ssl3 到 tls 1 2 的所有安全协议 但是在网上搜索时我发现代码为 ServicePointManager SecurityProtocol SecurityProtocolType Ssl3 SecurityProto
  • 如何获取 EF 中的实体更改增量?

    我只需要获取已更改字段的列表 数据存储区是 ssce 因此没有可用的触发器 EF 是否支持获取列表或构建通用组件 根据上下文的类型和生成的实体 您可以通过多种不同的方式来完成此操作 如果对象继承自 Entity 或 POCO 您可以使用Ob
  • 在运行时生成可执行文件

    好吧 所以我想知道如何创建一个程序 该程序创建第二个程序 就像大多数压缩程序如何创建自解压自可执行文件一样 但这不是我需要的 假设我有 2 个程序 每个都包含一个类 我将使用一个程序来修改类并用数据填充类 第二个文件将是一个也具有该类的程序
  • 如何使用 C# 以编程方式识别对方法的引用数量

    我最近继承了需要一些修剪和清理的 C 控制台应用程序 长话短说 该应用程序由一个包含超过 110 000 行代码的类组成 是的 单个类中有超过 110 000 行 当然 该应用程序是我们业务的核心 全天候运行更新动态网站上使用的数据 尽管我
  • 如何在不加载到内存的情况下对大型 csv 文件进行排序

    我有 20GB csv 文件 如下所示 CallId MessageNo Information Number 1000 1 a 2 99 2 bs 3 1000 3 g 4 66 2 a 3 20 16 3 b 1000 7 c 4 99
  • 如何使用 XmlSerializer 生成标记前缀

    我想使用 XmlSerializer 生成以下内容
  • 阅读《Effective、MoreEffective 和Effective Modern C++(和 STL)》的首选顺序是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 据我所知 More effective C 是 Effective C 的扩展 而 Effective Modern C 则专注于 C 11 和
  • 删除指针后将其设为 NULL 是一个好习惯吗?

    我首先要说的是 使用智能指针 您将永远不必担心这个问题 下面的代码有什么问题 Foo p new Foo use p delete p p NULL 这是由答案和评论 https stackoverflow com questions 19

随机推荐

  • vue项目中使用echarts5

    前言 echarts中升级到版本5以后 使用方法发生了改变 注意不兼容ie8了 还有引入方法改变了 使用步骤 1 安装 cnpm install echarts save 2 引入 去除 default exports 的支持 v4 及其之
  • Qt5.15.2安装Android开发环境。

    文章目录 1 下载并安装JDK 1 1 下载 1 2 安装 2 修改sdk definitions json文件 3 QtCreator的配置 3 1 设置JDK Android SDK的路径 3 2 设置openssl 现在 202306
  • python3.6 装饰器

    装饰器函数 装饰器 在函数运行时增加功能且不影响这个函数原有内容 普通装饰器函数 语法 1 2 3 func1 def func2 pass 符号为装饰器函数语法 也常叫做语法糖 先来看一个简单的装饰器函数实现 1 2 3 4 5 6 7
  • neo4j5.x使用教程简版

    之前写过3 x版本的neo4j使用方法 最近又要用neo4j发现版本升级了好多 我使用的是4 4 5 5 x的都差不多 但是跟以前区别挺大 引入maven包 jdk本人使用的是17
  • 【HDLBits 刷题 8】Circuits(4)Sequential Logic---Shifts Registers & More Circuits

    目录 写在前面 Shifts Registers Shift4 Rotate100 Shift18 Lfsr5 Mt2015 lfsr Lfsr32 Shift registier Shift registier2 3 input LUT
  • 基于python的matplotlib、numpy库实现的图形绘制(数据可视化)

    一 sin cos函数 1 题目要求 编写程序 绘制正弦曲线和余弦曲线 提示 利用numpy的linspace sin 或cos 函数生成样本数据 正弦或余弦值 2 函数讲解及代码 import matplotlib pyplot as p
  • IDEA之Mybatis Log Plugin的使用

    Mybatis Log Plugin是一个用于记录Mybatis SQL语句执行情况的插件 帮助开发人员方便地追踪和分析Mybatis执行的SQL语句 从而更容易地找出程序中存在的问题和优化SQL语句的性能 Mybatis Log Plug
  • @RefreshScope 和 @Scope的使用及源码解析

    一 Scope Scope 是用来定义Spring Bean的作用域范围 分为singleton prototype request session application等 其中singleton和prototype为bean对象单例和每
  • 西瓜视频中视频计划还有机会吗?

    中视频计划也不是什么新项目 只是视频平台根据推广需要 不定期的对某类视频的创作进行推广激励的一种方式 一 中视频的定义 首先从时长和形式上说 中视频就是时长在一分钟以上 30分钟以内的视频内容 大部分以横屏为主 而这一次实操的项目也是横屏内
  • 蓝牙播放Stereo和Hands-Free AG Audio两种模式的区别?

    当使用蓝牙耳机时 发现电脑的播放设备显示了两种模式 如下图所示 Stereo模式下声音正常 而调到Hands Free AG Audio模式下声音频带窄了很多且音质差 典型的电话音 下面具体说说这两种模式的区别 stereo 立体声 音质好
  • Cannot load file containing pickled data when allow_pickle=False

    ValueError Cannot load file containing pickled data when allow pickle False 错误位置 utils dataloaders py 把 def load image s
  • 【Java基础知识 11】java泛型方法的定义和使用

    Java学习路线 搬砖工逆袭Java架构师 简介 Java领域优质创作者 CSDN哪吒公众号作者 Java架构师奋斗者 扫描主页左侧二维码 加入群聊 一起学习 一起进步 欢迎点赞 收藏 留言 目录 一 基本介绍 二 提出背景 1 代码实例
  • MySQL单天,本周,本月所有数据

    1 查询单天的记录 select from create time where TO DAYS create time TO DAYS NOW 注意 这里的create time是数据库中的时间字段 会根据这个时间去和今天的时间对比获取数据
  • 标志性建筑和成果的引领作用 (图&文)---旅美散记之一

    暑假期间在美国伊利诺伊大学香槟分校 UIUC 停留了几日 交流学习 访友探亲 一举数得 七分兴奋 三分累 累完之后 就不太想写长文 图像处理领域有句话 一图顶千言 说的是信息当量 不是说当年的 一句顶万句 否则 一万句就只相当于10幅图了
  • Android学习笔记---INSTALL_FAILED_INVALID_APK: /data/app/vmdl254464637.tmp/3_slice__ signatures are incon

    一个周末过去了 新的一周开始了 但是早上来的时候遇到了一个令人发指的问题 AS调试APK一直安装不上 提示 Installation failed with message Failed to finalize session INSTAL
  • python题目52:磁盘容量排序

    磁盘的容量单位有M G T这三个等级 他们之间的换算关系为 1T 1024G 1G 1024M 现在给定N块磁盘的容量 请对他们按从小到大的顺序进行稳定排序 例如给定5块盘容量 1T 20M 3G 10G6T 3M12G9M 排序后的结果为
  • R语言—定义数据框的列名

    1 在定义数据框时 定义列名 例如 a lt c 2 23 45 6 7 1 6 7 b lt c 4 6 1 2 5 66 10 2 df lt data frame a b 此时数据框df中的列名分别是a b 也可以如下 df lt d
  • 详解3D中obj文件格式

    原文链接 https www jianshu com p f7f3e7b6ebf5 加载3D模型的时候 遇到 obj格式的模型文件 之前有专门看过相关的资料 可惜没有总结 一下就忘了 再次用到 又去搜索了一番 发现网上很多文章讲的不是很全面
  • Char和VarChar的区别(无废话版)

    区别1 定长与变长 char表示定长 长度固定 varchar表示变长 即长度可变 char如果插入的长度小于自定义长度时候 中间用空格填充 varChar小于定义长度时 还是按照实际长度存储 插入多长就存多长 因为长度是固定的 char的
  • 浙江农林大学蓝桥杯程序设计竞赛校选拔赛 E-谁是天选之人

    众所周知下棋是一个运气游戏 不过好像也是有规律可循的 Graceful smiling cookies给它的n个棋子标序号 他决定以这些序号决定谁是天选 最开始每个棋子标号都是0 它要进行m次标序号 第i次标序号 它会将第 i X a b