CF2145F Long Journey

news/2025/10/9 11:04:59/文章来源:https://www.cnblogs.com/CuteNess/p/19130666

你在 \(0\) 时刻位于数轴上的 \(0\) 位置。每个时刻开始时,你可以选择右移一个单位,或者停在原地。在第 \(t\) 个时刻结束时,如果你的位置 \(p\) 满足 \(p \equiv b_{t\bmod n} \pmod {a_{t\bmod n}}\),那么你就输了,注意 \(0\) 时刻可能已经满足这个条件,但是忽略这种情况。

询问到达数轴上 \(m\) 位置需要的最少时间,或报告不可能。

\[1\le n,a_i \le 10,1\le m \le 10^{12} \]


敏锐地注意到数据范围非常小。

首先一个观察是,能向前走的时候就向前走一定是最优的。

证明是,假设某一个时刻等待能够比向前走更快达到终点,

image

那么我们调整成如图的绿色路线一定不会更劣。

image

因此我们只需要贪心地向前走就可以了。

考虑加速这个过程。

发现 \(\text{LCM}(1,2,3,4,5,6,7,8,9,10)=2520\)

因此我们可以记录 \(f_{i,j,k}\),表示当前状态满足 \(t\equiv i\pmod n\)\(p\equiv j\pmod {LCM}\),经过 \(2^k\) 时间后,能走多远。

边界状态是 \(f_{i,j,0}=[j+1\not\equiv b_{(i+1)\bmod n} \pmod {a_{(i+1)\bmod n}}]\)

然后可以简单递推,查询的时候倍增即可。

#pragma GCC optimize("Ofast", "inline")
#include <algorithm>
#include <iostream>
#include <vector>
#include <tuple>const int N = 11, M = 60, L = 2521;
#define rep(i,a,b) for(int i(a);i<=(b);++i)
#define rap(i,a,b) for(int i(a);i<(b);++i)
typedef long long i64;i64 m;
int n;
int a[N], b[N], pow2[M];
i64 dp[M][N][L];
void solve() {std::cin >> n >> m; int L = 1;rep(i, 1, n) std::cin >> a[i], L = L * a[i] / std::__gcd(L, a[i]);rep(i, 1, n) std::cin >> b[i];a[0] = a[n], b[0] = b[n], pow2[0] = 1;rap(i, 1, M) pow2[i] = pow2[i-1] * 2 %n;rap(i, 0, n) {rap(j, 0, L) {int x = (i + 1) % n;dp[0][i][j] = (j + 1) % a[x] != b[x];}}i64 turn = 1;rap(k, 1, M) {rap(i, 0, n) {rap(j, 0, L) {int a = (i + turn) % n, b = (j + dp[k-1][i][j]) % L;dp[k][i][j] = dp[k-1][i][j] + dp[k-1][a][b];}}	turn = turn * 2 %n;}i64 last = m, ans = 0;int a = 0, b = 0;for(int i = M - 1; i >= 0; --i) {if(last > dp[i][a][b]) {last -= dp[i][a][b];b = (b + dp[i][a][b]) %L;a = (a + pow2[i]) %n;ans += 1ll << i;}}for(int i = M - 1; i >= 0; --i) {if(dp[i][a][b] == 0) {b = (b + dp[i][a][b]) %L;a = (a + pow2[i]) %n;ans += 1ll << i;}}if(dp[0][a][b] == 0) std::cout << "-1\n";else std::cout << ans+1 << "\n";
}int main() {std::ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0);int t; std::cin >> t; for(; t--; ) solve();
}

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

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

相关文章

强化学习实验环境库 gym/Gymnasium

Gym库(https://gym.openai.com) 是OpenAI推出的强化学习实验环境库。它用Python语言实现了离散之间智能体-环境接口中的环境部分。每个环境就代表着一类强化学习问题,用户通过设计和训练自己的智能体来解决这些强化学…

网站买流量是怎么做的上海建设摩托车科技有限公司官网

什么是es(elasticsearch) Elasticsearch是一个开源的分布式搜索和分析引擎&#xff0c;它构建在Apache Lucene搜索引擎库之上。它提供了一个分布式多用户能力的实时搜索和分析引擎&#xff0c;能够处理大规模的数据。Elasticsearch被广泛用于构建全文搜索、日志分析、实时应用…

深圳网站建设首选上榜网络山河建设集团有限公司的网站

第33题 在 OSI 参考模型中, 下列功能需由应用层的相邻层实现的是()A. 对话管理B. 数据格式转换C. 路由选择D. 可靠数据传输 很显然&#xff0c;题目所问的应用层的相邻层是表示层。该层实现与数据表示相关的功能。选项a中的对话管理属于会话层。选项c中的路由选择属于网络层。…

为什么需要建立全面的质量管理体系

为什么需要建立全面的质量管理体系什么是全面的质量管理? 所谓全面质量管理, 简称TQM (Total Quality Management)就是一个组织以产品质量为中心,以全员参与为基础,目的在于通过让顾客满意和本组织所有成员及社会…

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)了解

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);这行代码在 .NET Core / .NET 5+ 项目里的作用一句话就能说清楚:把 Windows 专用的“代码页”编码(GB2312、Shift-JIS、Windows-1252 等)注册到程序…

mybatis pagehelper 分页参数污染线程的问题

mybatis pagehelper 分页参数污染线程的问题参考: https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md 最佳实践 public interface CountryMapper { List selectByPageNumSize( @Pa…

TortoiseGit——Error:Unable to write index

问题现象 使用TortoiseGit进行分支合并时,出现下述问题。排查过程 网上查了一圈,说可能是磁盘空间导致的。但看了一下,分支所在的磁盘空间还有近500G,因此不可能磁盘空间问题导致。 那么最大可能就是文件的写入权限…

2025 年等离子清洗机源头厂家最新推荐排行榜:聚焦大气真空宽幅等多类型设备,精选实力口碑双优企业自动化/常压/低温/大腔体/射频等离子清洗机厂家推荐

当前,等离子清洗技术在 3C、半导体、光伏、汽车等工业领域的应用愈发广泛,市场对等离子清洗机的需求持续攀升。但随之而来的是行业乱象:大量厂家涌入导致产品质量参差不齐,部分企业缺乏核心技术,设备稳定性差、处…

美容行业培训网站建设黑帽seo是作弊手法

connection reset by peer的常见原因 1.服务器的并发连接数超过了其承载量&#xff0c;服务器会将其中一些连接关闭&#xff1b;2. errno 104错误表明你在对一个对端socket已经关闭的的连接调用write或send方法&#xff0c;在这种情况下&#xff0c;调用write或send方法后&…

Litho(deepwiki-rs):让代码自己说话——AI驱动的自动化架构文档生成革命

Litho(deepwiki-rs):让代码自己说话——AI驱动的自动化架构文档生成革命2025-10-09 10:50 姜 萌@cnblogs 阅读(0) 评论(0) 收藏 举报作为对标Davin商业化版本DeepWiki的开源项目,Litho(deepwiki-rs)通过多智…

湖南长沙网站优化主旨

定义和用法 some() 方法用于检测数组中的元素是否满足指定条件&#xff08;函数提供&#xff09;。 some() 方法会依次执行数组的每个元素&#xff1a; 如果有一个元素满足条件&#xff0c;则表达式返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素&#xff0c…

2025 年最新推荐!国内空调机组厂家权威排行榜,含冷凝热回收等多类型机组企业优选指南冷凝热回收/泳池热泵/屋顶式/海水源养殖热泵空调机组厂家推荐

伴随建筑节能升级与工业场景细化,空调机组市场需求持续攀升,从医疗净化空间到数据中心,从商业综合体到新能源厂房,对设备的节能性、智能化、适配性提出更高要求。但当前市场品牌良莠不齐,既有技术滞后的老旧产品,…

基于Zernike灰度矩的亚像素边缘检测实现(精度0.05 pixel)

一、算法原理与数学模型 1. Zernike矩基础 Zernike矩通过正交多项式描述图像灰度分布,其旋转不变性和抗噪声特性适合亚像素边缘检测。定义第n阶径向多项式:其中\(0≤ρ≤1,m∈[−n,n]\)且\(n−∣m∣\)为偶数。 2. 亚…

北京网站优化关键词排名瓯北网站制作报价

文章目录 1. **更多标准库函数支持constexpr**2. **支持动态内存分配**3. **支持虚函数和多态**4. **支持try-catch异常处理**5. **更灵活的控制流**6. **支持std::initializer_list**7. **支持修改union活跃成员**8. **允许更多类型的非类型模板参数**总结 C20对 constexpr进…

微信公众号 网站开发做医院的系统网站怎么做

Redis热搜 原理数据类型redis操作简单实现 实操封装方法执行方法最后使用springboot的定时任务对热搜榜单进行维护 原理 使用redis实现热搜的原理就是维护一个zset集合&#xff0c;然后使用score作为当前搜索词的搜索量&#xff0c;score越高的搜索词就说明该搜索词热度越高。…

如何分析网站的设计千山科技做网站好不好

一、同程旅行一面 自我介绍技术提问 打开新的tab页、window.open是否共享sessionStorage存储的数据vue、react 源码有没有看过&#xff0c;说一下react17 与 react18区别webpack中loader与plugin&#xff0c;有没有自己写过vuex、reactx 刷新数据丢失 怎么做的持久化 反问 总…

鸿蒙应用开发从入门到实战(十七):ArkUI组件List列表布局

ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文通过简单案例演示如何使用List组件实现列表布局。大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更…

怎样做一个网站怎么用小皮创建网站

SQL Server详细使用教程(包含启动SQL server服务、建立数据库、建表的详细操作) 非常适合初学者 文章目录 目录 前言 一、启动SQL server服务的三种方法 1.不启动SQL server服务的影响 2.方法一&#xff1a;利用cmd启动SQL server服务 3.方法二&#xff1a;利用SQL Serv…

详细介绍:CSS3美化页面元素

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

2017年网站建设视频教程大学生创新创业大赛负责人简介

实验七 SHA-1 一、实验目的 熟悉SHA-1算法的运行过程&#xff0c;能够使用C语言编写实现SHA-1算法程序&#xff0c;增 加对摘要函数的理解。 二、实验要求 (1)理解SHA-1轮函数的定义和工作过程。 (2)利用VC语言实现SHA- 1算法。 (3)分析SHA- 1算法运行的性能。 三、实验…