速通ACM省铜第十六天 赋源码(Sigma Cubes和Find Permutation 2和Rotate and Sum Query) - 教程

news/2025/10/12 18:46:54/文章来源:https://www.cnblogs.com/lxjshuju/p/19137019

目录

引言:

Sigma Cubes(水题)

        题意分析:

        逻辑梳理:

        代码实现:

Find Permutation 2(水题)

        题意分析

        逻辑梳理

        代码实现

Rotate and Sum Query(主要)

        题意分析

        逻辑梳理

        代码实现

结语:


引言:

        昨天没有更新速通ACM省铜,是因为昨天事比较多,去搞ICPC区域赛的一些信息什么的一些事情了,就耽搁了,搞完时候已经9点多了,就没招了,所以昨天就没有打题和写博客,那么,今天我又复苏了,桀桀桀

        今天呢,我们不讲CF的题,因为今天正巧有atcoder abc的比赛,那我就打打那个,来讲讲这场比赛的题,这场比赛我就开出了ABC三道题,AB是纯水题,C感觉有点意思,D拼尽全力无法战胜了

        因为这是新的竞赛平台,那我就先放一个链接,这是今天这场比赛的链接UNIQUE VISION Programming Contest 2024 Autumn (AtCoder Beginner Contest 425) - AtCoder

        那么,我们就进入今天的算法讲解吧————————>

                ​​​​​​​        ​​​​​​​        ​​​​​​​        

Sigma Cubes(水题)

        按照惯例,先看题目

        题意分析:

        题目链接在这里A - Sigma Cubes

        不想跳转的可看下图

        这题题目要求很简单,就是给你一个数,然后通过运算题目给的式子来运算出结果,然后输出就可以了

        题目到这里就梳理完了,那么我们来看看这题逻辑的梳理方面


        逻辑梳理:

        逻辑其实也很简单,题目都告诉你奇数就-这个奇数的3次发,偶数就+ 这个偶数的3次方,那只需要判断一下就好啦,这跟之前讲的那道水题一样简单

        那么我们来看代码实现       


        代码实现:

        这里就直接放代码啦

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
long long n;
long long ans;
int main()
{cin >> n;for (int i = 1; i <= n; i++){if (i % 2)ans -= pow(i, 3);elseans += pow(i, 3);}cout << ans << endl;return 0;
}

        那么这题就讲完啦,是不是很水,我们来看下一题

Find Permutation 2(水题)

        我们先来看题目

        题意分析

        题目链接在这里B - Find Permutation 2

        不想跳转的可看下图

        这题的题目就是也很简单,就是给你一个数组a,然后问你存不存在满足条件的p数组,如果存在就输出Yes,然后再输出p数组,否则就输出No即可

        那什么样的数组满足条件呢,就是a数组中不是-1的那些元素的位置与p数组中同样位置的地方,这俩个的值要一样,然后p数组中刚好1-N的每个数都存在

        这就是题目的意思,接下来我们来梳理一下题目的逻辑


        逻辑梳理

        能否找到满足条件的p其实很简单,就是a数组里面不要有重复的非-1元素,不然就无法满足p数组能有1-n的数

        然后判断完能否创建后,接下来就是数据的填充,那么可以从小到大,也可以从大到小

        就是如果一个数没访问过且a[i]是-1,那么就输出没访问过的数,如果a[i]是具体的值,那么就输出a[i]就好啦,那么接下来,题目的逻辑梳理完啦,我们就进入代码的实现环节


        代码实现

        代码方面没什么好说的,毕竟这也是一道水题,就直接放代码啦

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
int n;
int a[20];
int vis[20];
int main()
{cin >> n;int xixi = 0;for (int i = 1; i <= n; i++){cin >> a[i];if (a[i] != -1){if (vis[a[i]])xixi = 1;vis[a[i]] = 1;}}if (xixi)cout << "No" << endl;else{cout << "Yes" << endl;int ge = 0;for (int i = n; i > 0; i--){if (!vis[i]){ge = i;break;}}for (int i = 1; i <= n; i++){if (!vis[a[i]]){cout << ge << " ";ge--;while (vis[ge])ge--;}elsecout << a[i] << " ";}cout << endl;}return 0;
}

        那么,这题就讲完啦,是不是也很水,我们接着来看下一题

Rotate and Sum Query(主要)

        这题就是这篇博客最主要的部分了,前面俩题我感觉还是很水的,这题还是有点意思的,那么,我们来看题目吧

        题意分析

        题目链接在这里C - Rotate and Sum Query

        不想跳转的可看下图

        这题的题意很简单,就是给你一个相当于队列吧,然后告诉你有2种操作,让你选择

        1操作是让前c个元素出队再入队

        2操作是输出现在队列下标i到j的总和

        这就是这个题目的意思了,接下来,我们来看一下题目逻辑的梳理

        逻辑梳理

        首先看数据范围,如果开队列,出队,入队,算值都一个个操作,那么,时间复杂度肯定会超时

        所以我用的方法是先用数组装下原始的队列,然后再算出前缀和

        前缀和要算俩次,这样每种情况下队列的值都可以通过前缀和来算出来了

        那么下标方面我们要怎么操作呢,我们可以运算下标的变化值,然后通过下标的变化值,来算出各种情况下的值

        那么下标的变化值我们如何来求呢,很简单,如图,如果是出队一个进队一个,那么队列就变成了这个样子,那i,j的左右下标变化也都加了一

        通过这个图一个就能知道,下标的变化值的式子为L=(L+c)%n

        那么,逻辑就梳理完啦,接下来,我们进入代码的实现环节


        代码实现

        这题主要也是思维方面比较巧妙,思维想到了,代码实现自然就不难了,这里就直接展示AC码啦

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
int n, q;
long long a[200010];
long long sum[400010];
int main()
{cin >> n >> q;for (int i = 1; i <= n; i++){cin >> a[i];sum[i] = sum[i - 1] + a[i];}for (int i = n + 1; i <= 2 * n; i++)sum[i] = sum[i - 1] + a[i - n];int k, L = 0;while (q--){cin >> k;if (k == 1){int l;cin >> l;L = (L + l) % n;}else{int l, r;cin >> l >> r;cout << sum[r + L] - sum[l + L - 1] << endl;}}return 0;
}

        那么这题也讲解完啦

结语:

        今日算法讲解到此结束啦,希望对你们有所帮助,谢谢观看,如果觉得不错可以分享给朋友哟。当然也可以关注一下,有什么看不懂的可以评论问哦

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

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

相关文章

Linux操作系统扫盲汇总

linux 基本概念概括VFS 树链接:虚拟文件系统就是一个树,树的根部就是 / , 树上不同的节点,都会指向不同的物理地址(文件系统的目录树的不同节点其实是来自不同的分区),可以是具体的文件系统,或者网络节点,或者…

ABC round 427

ABC round 427T3注意到 \(n\) 非常小,那么枚举染色方式然后判断二分图即可。 #include <bits/stdc++.h> #define int long long #define rep(i, a, b) for(int i = a; i <= b; ++i) #define rep_(i, a, b) f…

卸载驱动模块,内核崩溃排查调试记录

问题 在学习串口子系统,在卸载串口模块的时候,引起内核崩溃。具体的崩溃日志如下: /mnt/uartdeep # rmmod virtual_uart.ko [ 23.208560] /home/book/bsp/mcu/uartdeep/virtual_uart_ok/virtual_uart.c virtual_u…

详细介绍:游戏引擎以及游戏开发

详细介绍:游戏引擎以及游戏开发pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&qu…

springboot大学校园旧物捐赠网站(代码+数据库+LW) - 详解

springboot大学校园旧物捐赠网站(代码+数据库+LW) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consol…

DropLoRA 论文浅读:通过动态子空间学习突破 LoRA 的性能瓶颈

DropLoRA是一项简单而深刻的工作。它通过一个极其轻量的动态剪枝模块,巧妙地解决了传统LoRA的静态子空间瓶颈问题。DropLoRA 论文浅读:通过动态子空间学习突破 LoRA 的性能瓶颈 一、研究背景 随着大规模语言模型(LL…

实用指南:PCB 半固化片:多层板制造的技术基石,猎板的场景化适配与质控逻辑

实用指南:PCB 半固化片:多层板制造的技术基石,猎板的场景化适配与质控逻辑pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fam…

操作系统CPU和内核思维导图总结

操作系统CPU和内核思维导图总结 https://www.processon.com/view/link/60eef701e0b34d06fba955b4

defold游戏引擎与lua(teal)编程语言

最近有时在想:UE5很强大,但放不进浏览器;C++对个人游戏开发不友好(掉头发嘞~) Godot类似Blender,300MB编辑器大小,itch.io大量使用godot制作网页游戏。但是对WebGPU的支持遥遥无期,见 https://github.com/godo…

个人用云计算学习笔记 --16(DHCP 服务器) - 实践

个人用云计算学习笔记 --16(DHCP 服务器) - 实践2025-10-12 18:20 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displ…

03 数值类型拓展

数据类型拓展二进制0b八进制0十六进制0x 打印的结果默认为十进制浮点数拓展 #float 有限且离散,舍入误差,接近但不等于 #double #最好完全使用浮点数进行比较!!! #非要比较的话,有专用的类float f=0.1f; double d = 1…

python如何引用变量的名称

在Python中,引用变量的名称通常指的是动态地获取变量的标识符(即变量名)作为字符串。然而,需要注意的是,Python的变量更像是名字贴纸,贴在对象上,而不是容器。这种操作在一些特殊的场景下可能会用到,比如调试、…

Python GIL与No-GIL技术详解

Python的全局解释器锁(Global Interpreter Lock,简称GIL)是CPython解释器中最具争议和核心的设计之一。它深刻影响着Python的并发编程模型,也是许多开发者在使用Python进行多线程编程时遇到性能瓶颈的主要原因。Py…

题解:AT_abc288_h [ABC288Ex] A Nameless Counting Problem

用这个题总结一些互异容斥的 trick,参考了周子衡的论文。 题意:求出满足以下两个条件的长度为 \(N\) 的整数序列 \(A = (A_1, A_2, \ldots, A_N)\) 的个数,并对 \(998244353\) 取模。\(0 \leq A_1 \leq A_2 \leq \c…

2025 年 CBN 砂轮源头厂家最新推荐榜单:专业实力与客户满意度全景解析及选购指南

在航空航天零部件精密切削、电子芯片超精密研磨、汽车发动机关键部件加工等高端制造领域,CBN 砂轮作为核心耗材,其品质直接决定加工精度与生产效率。然而当前市场乱象频发:部分厂家技术薄弱,产品耐用性与精度稳定性…

JDK安装和卸载

新的快捷键 常用 shift+delete:永久删除文件 ctrl+shift+esc:打开任务管理器 alt+f4:关闭进程 ps:前阵子ow流行发一些图片表情和不同颜色字体的时候,很多人用来伪装系统提示引诱玩家按下alt+f4,结果真有人不知道…

Python定义一个User类的基本写法

定义一个类的基础语法如下: class User:# 初始化方法或者叫构造器def __init__(self, name, email):self.name = name # 实例变量name定义和赋值self.email = email # 实例变量email定义和赋值# 一个实例方法def gr…

Python飞快入门专业版(四十八):Python面向对象之多态:不同对象调用同一办法的不同达成(实战案例)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

10.12 CSP-S模拟30 改题记录

10.12 啥也不会场HZOJ 写在前面 貌似T3T4不太可改,遂先把前两题的写了。大概就是T1打表3小时没找到规律吧,喜提0pts。真是成也T1,败也T1。Dearest Darling My universe 亲爱的 亲爱的宇宙啊 날 데려가 줄래 能否带我…