【洛谷题解/NOI2002】P2421/NOI2002荒岛野人

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

原题链接:https://www.luogu.com.cn/problem/P2421
难度:提高+/省选-
涉及知识点:扩展欧几里得算法(exgcd)

题意

有 n n n 只野人,第 i i i 只野人初始所在洞穴为 c [ i ] c[i] c[i],每年走过的洞穴数量为 p [ i ] p[i] p[i],寿命值为 l [ i ] l[i] l[i] 年。求在每个洞穴始终不会有两只及以上的野人同时出现在某一年的情况下,至少需要的洞穴数 M M M。

分析与解决

在有 m m m 个洞穴时,对于第 i i i 只野人,第 x x x 年所在的洞穴编号应为 ( c [ i ] + x × p [ i ] )   m o d   m (c[i]+x\times p[i])\bmod m (c[i]+x×p[i])modm,且需要保证对于不同的两只野人,该式的值不会相同。那么对于这 n n n 只野人,两两建立如下方程,考虑是否有解。如果在有 m m m 个洞穴时两两建立的 n 2 n^2 n2 个方程都有解,则 m m m 个洞穴不够,还需要增加;如果都无解,则说明 m m m 个洞穴可行。
c [ i ] + x × p [ i ] ≡ c [ j ] + x × p [ j ] (   m o d     m ) c[i]+x\times p[i]\equiv c[j]+x\times p[j](\bmod \ m) c[i]+x×p[i]≡c[j]+x×p[j](mod m)然后再做如下推导:
由同余式变换规则得,
x × p [ i ] − x × p [ j ] ≡ c [ j ] − c [ i ] (   m o d     m ) x\times p[i]-x\times p[j]\equiv c[j]-c[i](\bmod \ m) x×p[i]−x×p[j]≡c[j]−c[i](mod m)
由分配律得,
x × ( p [ i ] − p [ j ] ) ≡ c [ j ] − c [ i ] (   m o d     m ) x\times (p[i]-p[j])\equiv c[j]-c[i](\bmod \ m) x×(p[i]−p[j])≡c[j]−c[i](mod m)
整理得,
x × ( p [ i ] − p [ j ] ) − m y = c [ j ] − c [ i ] x\times (p[i]-p[j])-my=c[j]-c[i] x×(p[i]−p[j])−my=c[j]−c[i]
所以可以直接套用扩展欧几里得算法,如果在有 m m m 个洞穴时,求 x x x 的最小解,如果 x ≤ min ⁡ ( l [ i ] , l [ j ] ) x\leq \min(l[i],l[j]) x≤min(l[i],l[j]),说明在有 m m m 个洞穴,当前的 x x x 是一个解,因为所有野人都活着,那就是有解的情况,而我们要求的是无解的情况,因而排除。

输入数据时记录一下最大的初始洞穴编号,即在不考虑冲突的情况最少需要的洞穴数。然后从该值开始增加,每次 check 一下 i i i 个洞穴是否可行即可。

AC代码

#include <iostream>
#include <cstdio>

using namespace std;

typedef long long ll;

const int N = 20;
int n, m, ans;
ll x, y;
int C[N], P[N], L[N];

ll exgcd (ll a, ll b, ll &x, ll &y)
{
    if (!b)
    {
        x = 1, y = 0;
        return a;
    }
    int d = exgcd (b, a % b, y, x);
    y -= a / b * x;
    return d;
}

bool check (int m)
{
    for (int i = 1; i <= n; i++)
    {
        for (int j = i + 1; j <= n; j++)
        {
            ll a = P[i] - P[j], b = m, c = C[j] - C[i];
            int d = exgcd (a, b, x, y);
            if (c % d) continue;
            a /= d, b /= d, c /= d;
            if (b < 0) b = -b; //纠正负数
            x = (x * c %  b + b) % b;
            if (x <= L[i] && x <= L[j]) return false; //年份x在他们的寿命范围内,有解,不行
        }
    }
    return true;
}

int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> C[i] >> P[i] >> L[i];
        m = max(m, C[i]);
    }

    for (int i = m;; i++)
    {
        if (check(i))
        {
            cout << i << endl;
            return 0;
        }
    }
    return 0;
}

Android dex, odex, oat, vdex, art文件介绍 下图可以简化将Java源转换为OAT的过程: .dex Dalvik虚拟机字节码文件 .vdex 其中包含APK的未压缩DEX代码,以及一些旨在加快验证速度的元数据 .odex .oat // JIT,Just-in-time,即时编译,边运行边编译; // AOT,Ahead Of Time,提前编译,指运行前编译。 其中包含APK中已经过AOT编译的方法代码。 原始DEX文件(例如classes.dex)被转换为另一个包含本机代码的文件。这个新文件通常具有.odex。.oat扩展名,并由ELF格式 阅读详情

相关推荐

用Typora画流程图和序列图:Mermaid语法实战教程(含常见报错解决)

本文是一份详细的Typora与Mermaid语法实战教程,教你如何在Markdown文档中高效绘制流程图和序列图。文章涵盖从环境配置、核心语法到复杂图表构建的全过程,并重点解析了常见报错原因与解决方案,助你将可视化图表无缝融入文档工作流。

weixin_29279101的博客 299

洛谷P2421 [NOI2002]荒岛野人 题解

description: solution: 观察到答案并不会很大,于是我们可以枚举答案(这里不满足单调性,不能二分) 对于任意的i,j,原式可变形 为(Pi−Pj)∗x−M∗y=Cj−Ci(Pi −Pj)*x −M *y = Cj −Ci(Pi−Pj)∗x−M∗y=Cj−Ci 于是这就是一个exgcd的模型 最后求出如果x不存在或者超过了野人的寿命m就是答案,否则就继续找。 code: #in...

ShineEternal的笔记小屋 474

自动驾驶开发者必看:nuscenes数据集23类物体标注全解析(附避坑指南)

本文深入解析nuscenes数据集的23类物体标注系统,为自动驾驶开发者提供全面的标注规范解读和实战避坑指南。涵盖多模态数据组织、类别细分规则、属性系统应用技巧以及标注质量验证方法,帮助开发者高效利用这一标杆数据集提升模型性能。

weixin_29041767的博客 255

【题解】洛谷P2421[NOI2002]荒岛野人 (Exgcd)

洛谷P2421:https://www.luogu.org/problemnew/show/P2421 思路 从洞的最大编号开始增大枚举答案 对于每一个枚举的ans要满足Ci+k*Pi≡Cj+k*Pj(mod ans)的k,都要k>min(L[i],L[j]) 因为这个ans一定要满足在一个野人死之前可以满足条件 根据上式可以推出Ci+k*Pi=Cj+k*Pj...

173

RK3588开发板量产前必做:24小时DDR压力测试到底在测什么?(附ArmSoM-W3测试脚本解析)

本文深入解析RK3588开发板量产前的24小时DDR压力测试,揭示其核心价值与技术原理。通过memtester、stressapptest和变频测试的组合使用,全面验证DDR内存稳定性。特别介绍ArmSoM-W3测试脚本的创新设计,包括并行测试架构和异常熔断机制,为开发者提供可靠的量产测试方案。

weixin_30325487的博客 454

GD32F4系列替换STM32F4,HAL库CAN初始化卡死?一个Sleep模式的坑与填坑实录

本文详细解析了GD32F4系列替换STM32F4时,HAL库CAN初始化卡死的问题根源——Sleep模式差异。通过对比两款芯片CAN控制器的默认状态,提出了不修改HAL库源码的解决方案,即在HAL_CAN_MspInit()中清除SLEEP位,并分析了该方法的优势。文章还提供了国产MCU替换的通用建议和调试技巧,帮助开发者高效解决问题。

weixin_29174013的博客 217

P2421 A-B数对(增强版)

题目背景 woshiren在洛谷刷题,感觉第一题:求两数的和(A+B Problem)太无聊了,于是增加了一题:A-B Problem,难倒了一群小朋友,哈哈。 题目描述 给出N 个从小到大排好序的整数,一个差值C,要求在这N个整数中找两个数A 和B,使得A-B=C,问这样的方案有多少种? 例如:N=5,C=2,5 个整数是:2 2 4 8 10。答案是3。具体方案:第3 个数减第1 个数...

weixin_30881367的博客 218

【yolov8】与yolov5的区别及改进详解

yolov8-----有点厉害的目标检测框架.

qq_44878985的博客 3万+

bzoj1407,洛谷2421 NOI2002荒岛野人

题目大意: 克里特岛以野人群居而著称。岛上有排列成环行的M个山洞。这些山洞顺时针编号为1,2,…,M。岛上住着N个野人,一开始依次住在山洞C1,C2,…,CN中,以后每年,第i个野人会沿顺时针向前走Pi个洞住下来。 每个野人i有一个寿命值Li,即生存的年数。 奇怪的是,虽然野人有很多,但没有任何两个野人在有生之年处在同一个山洞中,使得小岛一直保持和平与宁静,这让科学家们很是惊奇。他们想知道,...

y_immortal的博客 QwQ(qdez_ymh) 307

手把手教你搞定CAC会议投稿:从LaTeX模板到PDF eXpress避坑全流程

本文详细解析CAC会议投稿全流程,重点介绍LaTeX模板调整、Turnitin查重技巧及PDF eXpress校验避坑指南。通过实战案例和代码示例,帮助研究者高效完成IEEE格式论文投稿,避免常见技术性失误,提升投稿成功率。

weixin_29969209的博客 397

基于STM32的HC-SR04超声波模块测距(新手级)

本人是嵌入式新手,学习了STM32的部分内容,最近想找些项目做,然后顺便学习了一下HC-SR04超声波模块,学习过程中也参考了一些大佬的文章。本文记录了自己的学习方法和学习过程,同时也希望能和各位大佬交流讨论。

weixin_63758495的博客 2205

洛谷P2421 [NOI2002]荒岛野人(扩展欧几里得)

题目背景 原 A-B数对(增强版)参见P1102 题目描述 克里特岛以野人群居而著称。岛上有排列成环行的M个山洞。这些山洞顺时针编号为1,2,…,M。岛上住着N个野人,一开始依次住在山洞C1,C2,…,CN中,以后每年,第i个野人会沿顺时针向前走Pi个洞住下来。 每个野人i有一个寿命值Li,即生存的年数。 下面四幅图描述了一个有6个山洞,住有三个野人的岛上前四年的情况。三个野人初始的洞穴...

weixin_34248023的博客 270

YOLOv11改进 ,YOLOv11改进主干网络为MobileNetV3,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。本文开始探讨了自动化搜索算法与网络设计如何协同工作,以利用互补方法来提升整体技术水平。通过这一过程,创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用场景。这些模型随后被适配并应用于目标检测和语义分割任务。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1934

[NOI2002]荒岛野人【洛谷P2421】

题目描述 克里特岛以野人群居而著称。岛上有排列成环行的M个山洞。这些山洞顺时针编号为1,2,…,M。岛上住着N个野人,一开始依次住在山洞C1,C2,…,CN中,以后每年,第i个野人会沿顺时针向前走Pi个洞住下来。 每个野人i有一个寿命值Li,即生存的年数。 下面四幅图描述了一个有6个山洞,住有三个野人的岛上前四年的情况。三个野人初始的洞穴编号依次为1,2,3;每年要走过的洞穴数依次为3,7,2;寿...

ESTHERWXY的博客 299

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

题解【luogu P2421 bzoj P1407 [NOI2002]荒岛野人】

洛谷题目链接 bzoj题目链接 题目大意:给定nnn组Ci,Pi,LiCi,Pi,LiC_i, P_i, L_i,求最小的MMM使得对于任意的i,j(1≤i,j≤n)i,j(1≤i,j≤n)i,j (1 \leq i, j \leq n) Ci+Pi×x≡Cj+Pj×x(modM)Ci+Pi×x≡Cj+Pj×x(modM)C_i + P_i \times x \equiv C_j + P...

TLE666的博客 347

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

[NOI2002]荒岛野人 数论

题目:https://www.luogu.org/problemnew/show/P2421 题意: n个人 Ci表示每个人的位置 , Pi表示每个人的走的长度 Li表示生命值。不妨我们可以枚举总共有q个洞穴 显然有:   整理得: 这显然是一个扩展欧几里得 可以将系数全部调正若x的最小正整数解比min(Li , Lj)小就不行。 若x无解则成立 #include&lt;c...

Exception 295

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

第十一周总结

第十一周总结

m0_63594467的博客 164

bzoj1407 / P2421 [NOI2002]荒岛野人(exgcd)

P2421 [NOI2002]荒岛野人 洞穴数不超过1e6 ---> 枚举 判断每个野人两两之间是否发生冲突:exgcd 假设有$m$个洞穴,某两人(设为1,2)在$t$时刻发生冲突 那么我们可以列出方程 $c_{1}+p_{1}t\equiv c_{2}+p_{2}t (mod\quad m)$ 移项一下:$(p_{1}-p_{2})t\equiv c_{2}-c_{...

dingqiongliang0363的博客 219

洛谷P2421

洛谷P2421 这一道题目是一道同余的题目,进行推理后用扩展欧几里得就可以了,解析我写在了代码里面 #include<bits/stdc++.h> #define Int64 long long #define maxn 17 using namespace std; Int64 c[maxn],p[maxn],l[maxn]; //出生地,速度,生命长度 int Extend_gc...

weixin_30394981的博客 113

洛谷 2421 荒岛野人

题目链接 我们先假设两个也人会相遇,设年份为x. (pix+ci)%m=(pjx+cj)%m; pix+ci+my=pjx+cj; (pi-pj)x+my=cj-ci; 若(cj-ci)!=kgcd(pi-pj,m),说明i,j永远不相遇, 若等于但x的最小正整数解>i,j中的寿命最小的,则也不可能相遇, 这样枚举i,j看一看他们是否会相遇。 若都不相遇则输出m #include<cs...

zailingzhe的博客 253

NOI 2002 荒岛野人

人生第一次做NOI的题祭!!! 大概是NOI最简单的一道题 克里特岛以野人群居而著称。岛上有排列成环行的M个山洞。这些山洞顺时针编号为1,2,…,M。岛上住着N个野人,一开始依次住在山洞C1,C2,…,CN中,以后每年,第i个野人会沿顺时针向前走Pi个洞住下来。 每个野人i有一个寿命值Li,即生存的年数。 下面四幅图描述了一个有6个山洞,住有三个野人的岛上前四年的情况。三个野...

dfssbqyrq96616258的博客 316

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 199

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 308

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 569

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20
上一篇: 【OI学习笔记】数论-乘法逆元
下一篇: 【洛谷题解/SDOI2012】P2303/SDOI2012 D1T1 Longge的问题
oier_Asad.Chen
博客等级 码龄7年 15粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oier_Asad.Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值