每日一题~abc 367 D+E(F 在上一篇)(区间和相关的计数问题前缀map,建图+倍增)

D题意:
环形的休息区,编号为 1-N,顺时针方向,从休息区i 到i+1 需要的代价是 ai, 从休息区 s 顺时针走到休息区 t ( s!=t )所需的最小步数是 M 的倍数。 找出可能的配对数 (s,t)
1.解决环形的问题:
将数组复制一遍。例如 2 1 4 3 --> 2 1 4 3 2 1 4 3
快速求两个区域的代价,处理前缀和。可以注意到 这里面 首尾 是重复的。2 1 4 是从1号到其他号的代价。 1 4 3 是2号到其他号的代价。
最后的 2 1 4 同样是1号,1 4 3 同样是2号。(每一个号的有效区域长度为n-1 最后的四号到其他点的代价计算的区域为 3 2 1 ,所以后面是计算重复的 )所以我们可以从 第三个元素开始处理。
2.
如果区间(i,j) 是合法的区间,存在 S i-1 和 S j 关于M同余。
我们可以枚举右端点。同时每个右端点 有效的左端点只有两个(也就是i 只有两个,但是因为比较的是 Si-1,所以要处理三个点)

思路是挺常见的,也许需要注意一点细节??

#include <bits/stdc++.h>
using namespace std;
#define int long long 
void solve()
{int n, m;cin >> n >> m;vector<int> a(2 * n + 1);for (int i = 1; i <= n; i++){cin >> a[i];a[n + i] = a[i];}for (int i = 1; i <= 2 * n; i++)a[i] = (a[i - 1] + a[i]) % m;map<int, int> mp;for (int i = 2; i <= n; i++)mp[a[i]]++;int ans=0;// 枚举 右端点for (int i=n+1;i<=2*n;i++){ans+=mp[a[i]];mp[a[i]]++;mp[a[i-n+1]]--;}cout<<ans<<"\n";
}
signed main()
{std::cin.tie(nullptr)->sync_with_stdio(false);int t;t = 1;// cin>>t;while (t--){solve();}return 0;
}

E题意:
两个N长的数组,a ,x。和操作次数k 。
一次操作是同时将所有的 a i < − − a x i a_i <-- a_{x_i} ai<axi
我们可以建图,A 数组的每一位可以看作图的节点,
X 数组的每一位可以看作图的边。
例如 x1=5;代表 从 1号节点 走一步 到达 5号节点。
我们倍增处理 st 表,快速处理 某个节点 走k 步,到达的点。
每个数都可以拆成2 的若干次幂倍数的和。
将k 拆位,从低位开始,如果第j位(从零开始)是1,那么 更新 now = fa[now][j]

一开始没用快读 T 了,不知道为什么

#include <bits/stdc++.h>
using namespace std;
#define int long long
int read()
{int x = 0, f = 1;char ch = getchar();while(!isdigit(ch)){if(ch == '-') f = -1;ch = getchar();}while(isdigit(ch)){x = (x << 1) + (x << 3) + ch - '0';ch = getchar();}return x * f;
}
void solve()
{int n, k;n=read();k=read();vector<vector<int>> fa(n + 1, vector<int>(62));for (int i = 1; i <= n; i++){fa[i][0]=read();}for (int j = 1; j < 62; j++){for (int i = 1; i <= n; i++){fa[i][j] = fa[fa[i][j - 1]][j - 1];}}vector<int> a(n + 1);for (int i = 1; i <= n; i++)a[i]=read();for (int i = 1; i <= n; i++){int pos = i;int kk = k;for (int j = 0; j < 62; j++){if ((kk >> j) & 1)pos = fa[pos][j];}cout << a[pos] << " ";}cout << "\n";
}
signed main()
{std::cin.tie(nullptr)->sync_with_stdio(false);int t;t = 1;while (t--){solve();}return 0;
}

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

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

相关文章

【51单片机】ds18b20驱动,11.0592MHZ,使用DS18b20

文章目录 ds18b20.h #include <reg52.h> #include <intrins.h> #include <math.h>// 管脚定义 sbit DS18B20_DATA_PIN = P1 ^ 0; // DS18B20数据口定义/******************************************************************************* * 函 数 名 …

Macos M1 IDEA本地调试 HBase 2.2.2

# 1. 前提 执行 mvn clean package assembly:single -DskipTests没问题&#xff0c;并在hbase-assembly/target目录下生成hbase-2.2.2-bin.tar.gz 文件夹 证明Maven 下载依赖没问题 1.1 报错 1 这里应该是报错找不到 com.google.protobuf:protoc:exe:osx-aarch_64:3.5.1 …

leetcode滑动窗口问题

想成功先发疯&#xff0c;不顾一切向前冲。 第一种 定长滑动窗口 . - 力扣&#xff08;LeetCode&#xff09;1456.定长子串中的元音的最大数目. - 力扣&#xff08;LeetCode&#xff09; No.1 定长滑窗套路 我总结成三步&#xff1a;入-更新-出。 1. 入&#xff1a;下标为…

docker inspect输出内容详解,推测容器运行命令

原始输出 [{"Id": "c2496d852ee3affd295a177e9f26f163a53da8d11e3708d6a479f189f707ad0b","Created": "2024-08-04T02:43:24.909341103Z","Path": "/startup.sh","Args": [],"State": {&quo…

lambda 表达式可以传递引用为什么需要引用捕获

当 lambda 表达式被传递或存储在其他地方时&#xff0c;通过引用捕获可以确保它始终访问正确的外部变量。—— 引用捕获可以精确地控制被捕获的引用变量的作用域。如果一个 lambda 表达式被存储在一个容器中&#xff0c;并且在不同的时间点被调用&#xff0c;引用捕获可以确保它…

入门STM32—外部中断

外部中断的存在使得微控制器能够及时响应外部事件&#xff0c;避免频繁的轮询操作&#xff0c;从而提高系统的实时性、效率和低功耗性能。 1.什么是外部中断&#xff1f; 外部中断是指微控制器接收到外部引脚的信号变化时触发的中断。STM32F103系列微控制器支持多个外部中断线…

鸿蒙(API 12 Beta3版)【DRM会话管理(C/C++)】数字版权保护开发

DRM会话管理&#xff08;MediaKeySession&#xff09;支持媒体密钥管理及媒体解密等&#xff0c;MediaKeySession实例由系统管理里的MediaKeySystem实例创建和销毁。 开发步骤 导入NDK接口&#xff0c;接口中提供了DRM相关的属性和方法&#xff0c;导入方法如下。 #include &…

学习嵌入式第二十九天

ipc进程间通信方式 PC&#xff0c;即进程间通信&#xff08;Inter-Process Communication&#xff09;&#xff0c;是操作系统中不同进程之间交换数据的一种机制。以下是一些常见的IPC方式&#xff1a; 管道&#xff1a;用于父子进程或兄弟进程之间的通信。消息队列&#xff…

selenium-java实现自动登录跳转页面

如果要一直刷新一个网页&#xff0c;总不能人工一直去点&#xff0c;所以想到大学时候学过selenium技术&#xff0c;写个脚本来一直刷新&#xff0c;因为经常写java语言&#xff0c;所以选用java语言来写 实验环境 注意&#xff0c;需要先准备好Google浏览器和Chrome-Driver驱…

除了系统问题 前端可能会有什么问题

目录 1.问题&#xff1a;页面加载缓慢&#xff0c;用户体验不佳。2.问题&#xff1a;页面在不同设备和屏幕尺寸下显示效果不佳。3.问题&#xff1a;不同浏览器对CSS和JS的支持程度不同&#xff0c;导致页面在不同浏览器下表现不一致。4.问题&#xff1a;页面中的事件处理不当&a…

代码随想录跟练第六天——LeetCode

第454题.四数相加II 力扣题目链接(opens new window) 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) &#xff0c;使得 A[i] B[j] C[k] D[l] 0。 为了使问题简单化&#xff0c;所有的 A, B, C, D 具有相同的长度 N&#xff0c;且 0 ≤ N ≤…

极限02:两个重要极限

1.夹逼准则 定义&#xff1a;设{ a n a_n an​}, { b n b_n bn​}, { c n c_n cn​}为实数列&#xff0c; a n ≤ b n ≤ c n a_n≤b_n≤c_n an​≤bn​≤cn​, 且 lim ⁡ n → ∞ a n lim ⁡ n → ∞ c n l \lim_{n \to \infty} a_n \lim_{n \to \infty} c_n l n→∞lim​…

ffmpeg6.1集成Plus-OpenGL-Patch滤镜

可参考上一篇文章。ffmpeg6.1集成ffmpeg-gl-transition滤镜-CSDN博客 安装思路大致相同&#xff0c; 因为 Plus-OpenGL-Patch也是基于 ffmpeg 4.x 进行开发的&#xff0c;所以在高版本上安装会有很多报错。 这是我安装后的示例&#xff0c;需要安装教程或者改代码可私信我。 …

记录一次 Redis 优化发送数据(使用管道批量传送)

一 项目背景 此前的项目中&#xff0c;鉴于客户方服务器的安全配置对 MQ 中间件有所限制&#xff0c;我们只得采用 Redis 的 list 作为简易的 MQ 来传送报文数据。然而&#xff0c;近段时间客户关闭了相关端口&#xff0c;导致大量数据积压&#xff0c;需要进行补发。在补发过程…

大数据背景下基于Python的牛油果销售数据可视化分析

注&#xff1a;源码在最后&#xff0c;只是一次实验记录&#xff0c;不合理的地方自行修改。 一 研究背景及意义 21世纪以来&#xff0c;随着科学技术的进步&#xff0c;人们的生活水平也随之大幅提升提高。在科技和经济快速发展下&#xff0c;全球已经进入了大数据时代。大数…

8.21-部署eleme项目

1.设置主从从mysql57服务器 &#xff08;1&#xff09;配置主数据库 [rootmsater_5 ~]# systemctl stop firewalld[rootmsater_5 ~]# setenforce 0[rootmsater_5 ~]# systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.serv…

使用 Fyne 构建 GUI 应用:设置标签文本和自增计数器

引言 Fyne 是一个用 Go 语言编写的跨平台 GUI 框架&#xff0c;它提供了一套丰富的组件来帮助开发者快速构建出漂亮的用户界面。在本文中&#xff0c;我们将通过一个简单的案例来演示如何使用 Fyne 创建 GUI 应用程序&#xff0c;该程序包含设置标签文本和自增计数器的功能。 …

「字符串」前缀函数|KMP匹配:规范化next数组 / LeetCode 28(C++)

目录 概述 思路 核心概念&#xff1a;前缀函数 1.前缀函数 2.next数组 1.考研版本 2.竞赛版本 算法过程 构建next数组 匹配过程 复杂度 Code 概述 为什么大家总觉得KMP难&#xff1f;难的根本就不是这个算法本身。 在互联网上你可以见到八十种KMP算法的next数组…

项目1 物流仓库管理系统

一、项目概述 本项目旨在开发一个功能全面的物流仓库管理系统&#xff0c;以数字化手段优化仓库作业流程&#xff0c;提高管理效率。系统集成了前端用户交互界面与后端数据处理逻辑&#xff0c;涵盖了从用户注册登录、订单管理、货单跟踪到用户信息维护等多个核心业务模块。通…

基于django的学生作业提交与管理系统,有管理后台,可作为课设使用

在本项目中&#xff0c;我们设计并实现了一个基于Django框架的学生作业提交与管理系统&#xff0c;旨在为教师和学生提供一个高效、便捷的作业管理平台。Django作为一个高效的Web框架&#xff0c;因其强大的功能和灵活的架构&#xff0c;使得本系统能够快速开发并扩展。 系统功…